Share Extension 앱그룹 생성하기앱 그룹을 만들기 위한 Step-By-Step iOS8 부터 지원되는 Extension 의 기능을 활용하기 위해서는 App Group 을 만들어서 묶어 줘야 합니다. 기본 App ID 생성, 생성시 App Groups 에 체크를 하고 진행해 줍니다. ID 는 기본이 되는 앱과 Extension 를 위한 앱 각각 1개씩 생성되어야 합니다.(Today 등 다른 Extension 사용시 각기 하나)ID 생성 후 그룹 생성을 위한 항목으로 이동합니다. 그룹 생성시 ID는 일관성 있게 해주는게 좋습니다. 기본으로 생성한 ID 항목을 선택하면 아래와 같이 App Groups 항목 설정이 필요하다고 나옵니다. 하단에 Edit 를 누르면 아래와 같이 수정이 가능합니다. 앞서 ..
class StepCounter { var totalSteps: Int = 0 { willSet { println("About to set totalSteps to \(newValue)") } didSet { if totalSteps > oldValue { println("Added \(totalSteps - oldValue) steps") } } } } let stepCounter = StepCounter() stepCounter.totalSteps = 200 // About to set totalSteps to 200 // Added 200 steps stepCounter.totalSteps = 360 // About to set totalSteps to 360 // Added 160 steps st..
struct Point { var x = 0.0, y = 0.0 } struct Size { var width = 0.0, height = 0.0 } struct Rect { var origin = Point() var size = Size() var center : Point { get { let centerX = origin.x + (size.width / 2) let centerY = origin.y + (size.height / 2) println("get 속성이 호출되었습니다") return Point(x:centerX, y:centerY) } set { origin.x = newValue.x - (size.width / 2) origin.y = newValue.y - (size.height /..
기본적인 선언 형태 enum My_Enum : Int { case JAN case FEB case MAR } var enumValue : My_Enum = My_Enum.MAR switch(enumValue) { case .JAN: println(enumValue.rawValue) case .FEB: println(enumValue.rawValue) default: println(enumValue.rawValue) } 아래와 같이 이전처럼 값을 지정할 수도 있다. enum My_Enum2 : Int { case A = 41 case B case C case D } 위와 같은 형태가 이전에 쓰이던 형태라면 아래와 같은 경우도 가능하다 enum My_Enum3 : String { case A = "1" ca..
이제 드디어 Closure ㅠ_ㅠ Swift 라고 해서 새로운 언어가 나왔지만 언어가 새롭다고 해서 기존의 개념이 바뀐건 아니다 함수형 언어라고는 하나 이러한 개념들은 60년대에 이미 논의가 되었더란다(-_-;) 그게 중요한게 아니고... 이렇기 때문에 새로나왔다고 해서 새로운 개념이 막막 나오고 그런건 아니다 Closure 라는 용어는 생소해도 Objective-C 에서 주구장창 써대던 Block 코딩이라고 생각하면 편하다 여기저기서 Closure 의 예제로 가장 만만하게 쓰이는 sorted 의 코드로 보면 이해하기 편하다 var intArray : [Int] = [1,2,5,4,6,3] var sortedArray : [Int] = sorted(intArray, { (t1 : Int, t2 : Int..
드디어 함수 일단의 기본개념 격인 C와 별다를바 없는데서 시작한다 기본적으로(코드 하이트 찾아서 적용해봄 으아;;) func funcName(Parameter:Int) -> (Int) { return Parameter+10 } var myValue = funcName(20) 위와 같이 함수이름과 파라미터와 리턴형을 정의해서 사용할 수 있다 몇가지 더 다양한 형태로 func myFunc(IntName x:Int, IntName2 y:Int) -> (Int) { return x+y } var myValue = myFunc(IntName: 10, IntName2: 10) 이런식으로 외부에서 받을 이름과 내부에서 쓰일 이름을 달리 가져갈 수도 있고 func myFunc(#x:Int, #y:Int) -> (Int..
Array 와 함께 가장 많이 쓰는 Dictionary Set 이라는 것도 있는데 이건 Objective-C 시절 부터도 그다지 많이 쓰진 않았던 터라..(사실 잘 모른다는게 젤 큰 이유지만..) 따로 한번 보고 일단 Dictionary는 1. 선언 - Array 처럼 뭐 여러가지 형태가 있는데 제일 맘에 드는 형태가 var integerDict : [Int : String] = [:] 이런식으로 생긴게 눈에도 잘 들어오는 것 같고 깔끔해 보인다 앞서 Array 때도 그랬듯이 기본적으로 var 로 선언 하면 mutable 이다 2. 값 설정은 integerDict[1] = "A" integerDict[3] = "B" 처럼 가능하다 3. 설정값을 업데이트 하는 것도 있는데 if let stringValue..
이제 핵심인 Array 1. 기본적인 선언 var integerArray = Array() var integerArray : [Int] = [] var integerArray = [Int](count: 3, repeatedValue: 0] 등등 여러가지 형태가 존재하던데.. 쓰면서 손에 익는걸 쓰면 될듯???(여러가지 샘플이나 몇개 참고해보고 나아 보이는걸...) 기본적으로 var 는 변수를 뜻하고 let 은 상수를 뜻하니 따로 mutable 로 선언했던 예전과 달리 이렇게 선언해 놓으면 추가 삭제가 가능하다 2. 값 추가 integerArray.append(3) integerArray += [3] integerArray += [4,5] 이런식으로 추가도 가능하다 3. 기본적으로 mutable 에서 가능..
Swift 에서는 nil은 '값이 없다'라는 의미로 사용한다고 한다(?) 예전처럼 var integerValue : Int 라는 값이 있다고 하면 if integerValue { ... } 이런식으로 (int 가지고 이러진 않았지만) 값이 있나 검사했다면 이제는 Int 라고 선언된 변수에는 nil 이 들어갈 수 없기에 에러를 띄운다 nil을 위해서는 optional 로 선언되어야 하고 var integerValue : Int? 처럼 마지막에 ? 를 붙이면 된다. 그렇다면 optional 은 nil 이 될 수 있다고 했으니 값을 가져와 사용할때는 nil 인지 여부를 체크해야 된다 var integerValue : Int? var integerValue2 : Int 이렇게 있다고 한다면 integerValu..