swift 공부

[arcjeen] 1. swift 변수 선언 및 자료형(기본자료형, 형번환, 배열, Set)

arcjeen 2017. 3. 20. 21:50

1.변수선언

 

    - NSFoundation에 선언되어있는 클래스들을 사용하는 objective-c 와 달리 변수선언은  var, 상수선언은 let 을 통해서 하며 이후 자료형의 표시는 :String, :Charter ,:Int 등 타입어노테이션을 명시하여 사용할 수 있다.

    

   ex) 

       - Objective-c

NSString *tmpStr = @"testStr";


       - Swift 

var tmpStr : String = "testStr";


- Swift 

 var tmpStr = "testStr"; //String

 var tmpInt = 19; //int

 var tmpBool = true; //bool


//따로 명시하지않는 경우에는 알아서 자을 지정한다

 

    - 형변환 NSFoundation 클래스의 형변환 메서드를 이용하지않고도 자료형의 생성자를 사용하여 형변환을 해줄 수 있다.


ex)

     - Objective-c 

        NSString *tmp = @"40";

                               int i = [tmp intValue]; // NSString to int


int i  = 40;

NSString *changeTmp = [NSString stringWithFormat@"%d",i];

//int to String


- Swift  

 var tmpInt = 40; 

 var tmpStr : String (40) // int to String


 var tmpStr :String = "40";

 var i :int = Int(tmpStr) // String to int 


- 논리연산자의 사용은 objective-c와 동일하다.


- 배열

  배열을 사용하는 형태는 objective-c에 가깝다기보다는 C와 유사하다고 볼 수 있을 것 같다.

  objective-c 는 불가변 배열과 가변 배열을 NSArray 와 NSMutableArray 클래스로 나누 어 사용하는 반면 Swift는 두개의 구분 없이 배열안의 내용을 변형 시킬 수 있다.

 Swift 에서 불가변 배열을 원할경우 var 가아닌 let으로 선언한다.


  - Objective-c

           NSArray *tmpArr = [[NSArray alloc]initWithObjects:@"a",@"b",@"c",nil]] ;

                  //배열 선언 및 초기화

   NSMutableArray *tmpArr

                                       = [[NSMutableArray alloc]init];

                                [tmpArr addobject:@"a"];

         [tmpArr addObject:@"df"];

                                        [tmpArr removeObject:@"df"];

                 [tmpArr replaceObjectAtIndex:1 withObject:@"dfds"];

    


     - Swift

               var tmpArr : Array<String> //동적배열 선언

var tmpArr : Array<String>() // 동적배열 선언 및 초기화

var tmpArr : [String]()


               var tmpArr = ["a","b","c"]; //정적 배열


tmpArr.append("a");

tmpArr.insert("b" atIndex: 2);

tmpArr[2] = "dffs"; //인덱스를 이용하는 방식은 수정은 가능하지만 추가는 불가능하다.


tmpArr[1...2] = ["a","b","c"]; //범위 연산자를 이용하여 배열에 접근



- Set

  

- Swift

var name : Set<String> = ["a","b","c"];  

var name : Set<String>();

name.insert("d");

name.remove("a");  // 없을경우 nil 반환.

name.removeAll()   // 배열비우기

name.contains("a") //검색


 - Set 연산 (집합 연산)



- intersect() -> 양쪽 집합에서 공통되는 아이템만 선택하여 새로운 집합을 만들어준다(교집합)


- exclusiveOr -> 양쪽 집합중 한쪽에만 있는 아이템을 선택하여 새로운 집합을 만들어준다


- union() -> 양쪽 집합에 있는 모든 아이템을 선택하여 새로운 집합을 만들어 준다

     중복값은 제거되게 된다.(합집합)


- substract() -> 한쪽 집합에 있는 모든 아이템에서 다른쪽 집합의 공통아이템을 제거한다

   (차집합)


let oddDigits : Set = [1, 3, 5, 7, 9];


let evenDigits : Set = [0, 2, 4, 6, 8];


let primeDigits : Set = [2, 3, 5, 7];


odddigits.intersect(evenDigits).sort();


//[ ]


oddDigits.exclusiveOr(primeDigits).sort();


// [1, 2, 9]


oddDigits.union(evenDigits).sort();


//[0,1,2,3,4,5,6,7,8,9]


odddigits.substract(primeDigits).sort();


//[1, 9]




* 집합은 배열과 유사하지만 순서나 인덱스가 없고 중복된 아이템을 허용하지 않는다.



% 아직은 foundation 프레임워크의 클래스들을 사용해보지않아 위의 것들이 얼마나 활용도가 있을지는 모르겠지만 objective-c에 익숙한 나로써는 swift 문법의 기본 함수들을 얼마나 쓸지는 아직 잘 모르겠다.