레이블이 iOS인 게시물을 표시합니다. 모든 게시물 표시
레이블이 iOS인 게시물을 표시합니다. 모든 게시물 표시

2014년 3월 6일 목요일

[iOS/OSX] CoreData #4 NSFetchedResultsController Filtering

NSFetchedResultsController 는 분명 유용하다. 하지만 몇 가지 문제가 있다. 대표적으로 동일한 Entity(Table)에 대해 여러 NSFetchedResultsController 를 만들면 문제가 발생 할 수도 있다. 두 가지 컨트롤러를 만들어 하나는 순차적으로, 하나는 특정 검색 결과만을 컨트롤 할 수 있다면 좋았을 것이다. 하지만 직접 해 보니 데이터를 제대로 읽지 못하는 등 여러가지 문제가 있었다.

만약 NSFetchedResultsController 를 이용하는 테이블에서 특정 내용 만을 검색해야 할 때는 어떻게 해야 할까?

2014년 3월 5일 수요일

[iOS/OSX] CoreData #3 NSFetchedResultsController

CoreData 에서는 NSFetchedResultsController 라는 컨트롤러가 제공된다. UI 툴킷에서만 붙던 컨트롤러라는 이름이 약간 어색하긴 한데 상당히 편리하게 써 먹을 수 있는 기능이 제공된다.

2014년 3월 4일 화요일

[iOS/OSX] CoreData #2 삭제, 검색​ 그리고 정렬​

CoreData 이야기 2편. 이번엔 삭제와 검색 및 정렬에 대한 이야기이다.

[iOS/OSX] CoreData #1 기본

CoreData를 명확하게 설명할 말은 찾기 힘든 것 같다. 쉽게 보면 '로컬 데이터베이스를 쉽게 쓰게 해 주는 도구' 로 설명 할 수도 있고 약간 넓게 'ORM 프레임워크'로 설명 할 수도 있다. 물론 이 모두 CoreData를 완벽하게 설명해 주는 말은 아니다.

어쨌든, CoreData를 사용하면 앱에서 사용하는 로컬 데이터베이스(sqlite3 기반)를 SQL 없이 다룰 수 있다. 참고로 좀 귀찮은 부분이 많다.

2014년 2월 28일 금요일

[iOS] 그림을 그려서 UIImage로 Export 시키기

이번 포스트는 Core Graphics 의 드로잉 함수를 이용해 그림을 그려서 UIImage 객체화 시키는 것에 관한 내용이다. 드로잉 함수들이야 워낙 많아서 일일이 적기엔 블로그라는 시스템이 맞지 않을 정도고 여기선 그냥 맛보기 함수만 몇 가지 나열한다.

2014년 2월 27일 목요일

[iOS] 캘린더 일정 이벤트 등록하기 EventKit 예제

앱에서 캘린더(Calender)나 미리알림(Reminder) 등에 이벤트를 등록 할 때는 EventKit 프레임워크를 이용 할 수 있다. 이 포스트는 캘린더용 일정을 앱에서 등록하는 방법에 대한 예제이다.

[Objective-C] 변수의 값이 변하는 것을 추적하는 방법

iOS에선 UIView의 크기가 변하면 자동으로 서브뷰(Subviews)도 그와 함께 리사이즈 되도록 하는 기능이 존재한다. 하지만 subview가 바뀌었을 때 그 상위의 UIView의 크기가 따라 바뀌는 등의 기능은 제공하지 않는다. 따라서 코드레벨로 좀 수동으로 구현하는 것을 먼저 생각하게 될 것이다.

이번 포스팅은 위 예제상황에서 좀 더 편한 코딩을 하기 위해 '변수 값의 변화를 추적하는 것'에 대한 글이다. (정확히는 UIView와는 직접적인 관계가 없고 Objective-C 의 Key-Value Coding 과 관련된 내용이다)

[참고] 이 글은 옛날 글입니다. 새 글은 'KVO (Key-Value Observing) 소개' 글을 참고 바랍니다.

2014년 2월 26일 수요일

[iOS/OSX] NSDate로 상대 시간 구하기

NSDate 로 상대적인 시간 (예를 들어 D-day 처럼 지금부터 얼마의 시간이 남았나 등)을 계산해내려면 NSDate 클래스 만으론 불가능하고 NSCalendar를 이용해 계산해야 한다.

[iOS] 문자메세지(SMS) 보내기 MFMessageComposeViewController 예제

아이폰용 앱에서 텍스트메시지(SMS)를 코드레벨에서 그냥(!) 보내기란 사실 불가능하다. 안드로이드 퍼미션만 확보하면 앱에서 마음대로 보내는 것이 iOS에서는 불가능하다는 이야기다. (물론 이 불편함 덕분에 아이폰은 보안이라는 다른 이득을 취했다)

그나마 다행인 점은 iOS에서 이런 SMS를 보내기 위한 수동적인 장치는 제공한다는 점이다. MFMessageComposeViewController 가 바로 이런 역활을 하는 프레임웍이다.

[iOS] 라벨에 링크 넣기 TTTAttributedLabel 예제

Cocoa Touch 프레임워크에서 제공되는 UILabel 은 UI에 글자를 표시하기 위한 가장 기본적인 컴포넌트이다. 하지만 텍스트를 표시하기 위한 기능이 풍부하다고는 할 수 없다. 예를 들어 세로 정렬(Vertical Align) 이라던가 문자열에 링크를 넣어 이 링크가 터치되었을 때의 반응을 처리한다던가 등의 기능이 제공되지 않는다.

이번 포스팅은 3rd-Party 확장 클래스인 TTTAttributedLabel에 대한 소개 및 간단한 예제에 관한 것이다. 이 확장은 아래 github 저장소에서 구할 수 있다.

2014년 2월 25일 화요일

[iOS] NSJSONSerialization 예제

옛날 옛적(?)에 iOS용 앱을 만들 때 JSON을 파싱하거나 인코딩 하려면 SBJson 이나 JSONKit 같은 외부 코드가 필요했다. 하지만 (제법 오래 전에) Cocoa 프레임워크에서 자체적으로 JSON에 관련된 프레임웍을 제공하기 시작했다. 그 이름하여 NSJSONSerialization 클래스이다.

[iOS] UIFont 예제

UIFont는 이름 그대로 폰트를 정의하는 클래스다. 수 많은 글자를 표시하는 UI 클래스에서 폰트를 명시하기 위해 사용하는 중요한 클래스이다.

2013년 11월 11일 월요일

[iOS] 화면이 꺼지는 것을 막기

굉장히 단순한 포스팅이지만 메모메모~ 특별한 경우 (예를 들어 게임 등) 화면이 자동으로 꺼지지 않기가 필요 할 때가 있다. 이럴 때는 다음 한 줄의 코드로 화면 자동 꺼짐을 막을 수 있다.

2013년 4월 18일 목요일

2012년 9월 28일 금요일

[iOS] 시스템 아이콘 추출기 UIKit Artwork Extractor

아이폰이나 아이패드 등 iOS용 앱을 개발 할 때 함께 일하는 디자이너가 없다면 앱 디자인 때문에 골머리를 썩힌다. 특히 아이콘은 가장 단순하면서도 필수적인 것인데 이걸 구하는 것도 힘든 일이다. 특히 기존의 아이폰 앱 등과 비슷한 모양을 만들어야 할 때는 시스템 아이콘을 쓰고 싶기도 한데 가끔 제약이 따른다.

2012년 7월 26일 목요일

Objective-C 2.0에서 property / synthesize

Objective-C의 OOP에서 특별한 문법이 있다면 바로 property와 synthesize라고 생각한다. 멤버변수(인스턴스)로의 접근 권한을 설정하고 이 멤버에 값을 세팅하는 규칙을 표준적인 방법으로 정의해 둠으로써 클래스의 사용 방법을 인터페이스(interface, 헤더의 역활?)화 해 준다.

2012년 7월 17일 화요일

NSException 디버깅

XCode에서 디버깅 모드로 테스트 중인 앱이 뭔가의 오류로 죽었다. 그런데 죽은 곳을 알 수가 없을 때가 있다. 디버거의 트레이스는 main을 가리키고 있는 경우가 많다. 이 경우 로그창의 메시지를 이용해 간접적으로 원인을 알 수도 있지만 실제 원인은 알 수 없는 경우도 많다.

MKMapView를 사용하는 앱이 자주 죽는 경우...

맵뷰(MKMapView)를 사용한 앱이 자꾸 죽는 문제가 있었다. 에러의 원인은 sent message to deallocated object, 즉 메모리 상에서 해제되어 버린 오브젝트의 무언가를 호출하려 했기 때문에 죽는다는 것이었다.

2012년 6월 19일 화요일

Xcode Storyboard, 약인가 독인가

스토리보드도 Xcode 4 버전에 들어서 새롭게 지원되기 시작한 개발 도구이다. 뷰 디자인과 흐름을 시각화 시켜서 직관적인 개발이 가능하게 도와준다는 점에서 편하게 개발 할 수 있다. 이 글은 이 스토리보드에 관한 감상 일 뿐이지 상세한 설명을 위한 글이 아님을 먼저 밝힌다.

제목이 '약이냐 독이냐' 라고 지었다면 역시 결론은 나온다. 잘 쓰면 약이고 못 쓰면 독이다. 다만 잘 써야 한다는 것은 잘 사용해야 한다는 의미가 아니라 용도에 맞게 사용해야 한다는 점이다.