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..
1. 기본적인 Switch Case 유의해야 할 것은 default 인데 obj-c 에서는 없어도 상관없었는데 Swift 로 바뀌면서 case 에 속하지 않는 경우를 포함하는 포괄적인 조건도 들어가야 된다고 함 그리고 마지막에 위치해야 되고 뭐라도 적혀 있어야지 아니면 break 라도 있어야됨 var tempValue = 10switch tempValue{case 10: println("10")default: println("Other Value") } 2. 조건도 지정 가능!var tempValue = 10switch tempValue{case 7...12: println("7...12")default: println("Other Value") }또는 case 에 7,10 같이 지정도 가능 3. 문자열..
1. 특정 범위 지정for term in 1...10 { println("my term \(term)") }var someArray = [1,2,3,4,5]for term in 1...someArray.count { println("my term \(term)") } 2. 배열 탐색var someArray = [1,2,3,4,5]for term in someArray { println("my term \(term)") } 3. 증가값 지정for var term = 0; term < 10; term++ { println("my term \(term)") } 4. 문자열도 됨var traceString = "tracing."for tracer in traceString { println("trace : \(..
1. Int : 정수형, UInt : Unsigned Int 8, 16, 32, 64 비트 붙을수 있음(ex : Int8, Uint8) 숫자의 진수표시 10진수 : 그냥.. 2진수 : 0b001011 8진수 : 0o244 16진수 : 0x102a 형변환 시엔 Int(3.444) 이렇게 2. Float, Double : 각각 32비트 64비트 부동소수점 3. String : 문자열 4. Bool : true, false 5. Array, Dictionary 기본적으로 [] 로 표현하는데 Array또는 Dictionary 처럼 명시적으로 선언 가능 하고 Array() 으로 암시적으로 선언 가능하다는데... 나중에 써보고.. 6. typealias AudioSample = UInt16 처럼 typedef 처럼..
1. 메인이 따로 없고 위에 위치한 코드가 먼저 실행됨 2. ; 없어짐 줄 마지막에 ; 일일히 안찍어도 됨 3. .h .m 구조 처럼 헤더가 따로 존재하는게 아니고 .swift 파일로 합쳐짐 4. 문자열 처리 할때 일일히 메소드를 사용할 필요 사라짐 (ex : var string = "abcde" string += "fghijkl" string += "\(anotherString) zzz") var integerValue = 30 6. 5번 처럼 동적으로 타입이 결정되니 초기화를 해주던지 아니면 타입을 명시하긴 해줘야됨 var integerValue : Int
2014년 6월에 발표했으니 지금쯤은 안정화도 많이 되었을테니 이제 시작 ㅠ_ㅠ..
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init]; [numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle]; NSNumber* candidateNumber; NSString* candidateString = [textField.text stringByReplacingCharactersInRange:range withString:string]; range = NSMakeRange(0, [candidateString length]); [numberFormatter getObjectValue:&candidateNumber forString:candidateString range:..
#import 콜백함수로 등록 // Registers the audio route change listener callback function AudioSessionAddPropertyListener ( kAudioSessionProperty_AudioRouteChange, audioRouteChangeListenerCallback, self ); 콜백함수 void audioRouteChangeListenerCallback ( void *inUserData, AudioSessionPropertyID inPropertyID, UInt32 inPropertyValueSize, const void *inPropertyValue ) { CFDictionaryRef routeChangeDictionary = in..
파일경로는 간단하게.. [[NSBundle mainBundle] pathForResource:@"aps" ofType:@"cer"]; 위 경로를 받아서 아래와 같이 검사 BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:somePath]; ex> NSString *filePath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"png"]; BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:filePath]; if (fileExists) { NSLog(@"Exist"); }else { NSLog(@"Not Exis..
웹 소스를 파싱하다 보면 javascript로 해당 페이지를 꾸밀때 함수가 뒤늦게 호출되어 미처 값을 가져 오지 못할때 webViewDidFinishLoad: 델리게이트 함수를 이용해 로딩이 끝났을때 NSString *html = [yourWebView stringByEvaluatingJavaScriptFromString: @"document.body.innerHTML"]; 를 통해 해당 페이지 소스를 가져올 수 있음! ps. [NSString stringWithContentsOfURL: encoding: error:]; 이걸로는 그냥 웹페이지 '소스 보기' 한것과 같은 결과
아이폰은 한글이 3바이트 라서.. NSInteger convertedLength = [targetStr lengthOfBytesUsingEncoding:(0x80000000 + 0x0422)]; //EUC-KR 식으로 길이 계산 char *converted = [targetStr cStringUsingEncoding:(0x80000000 + 0x0422)]; //EUC-KR 형식으로 인코딩된 char* NSLog(@"%d 글자 입력", convertedLength); if (convertedLength > 40) { // 한글은 2바이트로 계산한 Byte 길이 체크 NSData *data = [NSData dataWithBytes:target length:40]; // 딱 거기까지 잘라오기 NSStrin..
- 브라우저별 HTML5 기능 지원 여부 - When can i use... : http://caniuse.com/ - 자신의 브라우저 HTML5 지원 점수 - HTML5 Test : http://html5test.com/ - HTML5 로 구현된 - 문명 : http://www.freeciv.net/ - 여러가지 : http://web.appstorm.net/roundups/browsers/10-html5-games-paving-the-way/
투명하게 만들면 Flexible 아이템을 사용해서 정렬 편하게 할수 있어서... http://stackoverflow.com/questions/2468831/couldnt-uitoolbar-be-transparent http://blog.blackwhale.at/2010/07/transparent-uitoolbar/ @interface TransparentToolbar : UIToolbar @end @implementation TransparentToolbar // Override draw rect to avoid // background coloring - (void)drawRect:(CGRect)rect { // do nothing in here } // Set properties to make ba..
NSDecimalNumber *someAmount = [NSDecimalNumber decimalNumberWithString:@"340000"]; NSNumberFormatter *currencyFormatter = [[NSNumberFormatter alloc] init]; [currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle]; [currencyFormatter setCurrencySymbol:@""];//\ 표시 제거 [target setText:[NSString stringWithFormat:@"%@원", [currencyFormatter stringFromNumber:someAmount]]];
델리게이트 설정 후 - (void)webViewDidFinishLoad:(UIWebView *)aWebView { CGRect frame = aWebView.frame; frame.size.height = 1; aWebView.frame = frame; CGSize fittingSize = [aWebView sizeThatFits:CGSizeZero]; frame.size = fittingSize; aWebView.frame = frame; NSLog(@"size: %f, %f", fittingSize.width, fittingSize.height); } ps. 이미지 같은거 불러올때 걸릴 경우가 있어서 - (void)webViewDidStartLoad:(UIWebView *)webView { webVi..
//일수 구하기 NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; NSDateComponents *comp = [gregorian components:(NSYearCalendarUnit | NSMonthCalendarUnit) fromDate:self.viewDate]; [comp setDay:0]; [comp setMonth:comp.month+1]; int days = [[gregorian components:NSDayCalendarUnit fromDate:[gregorian dateFromComponents:comp]] day]; NSLog(@"day = %d", days); [gre..