내가 생성한 하위 객체에서 이벤트를 상위객체로 보내는 방법! – 1부 Delegate패턴

뷰에서 팝업창을 하나 만든다고 가정을 하자. 팝업창에는 여러가지 정보나 버튼이 있고 그 버튼을 누르면 팝업창을 생성한 상위 뷰에 선택한 메뉴가 보이는 구조라고 하면 이걸 어떻게 구현할까? 팝업을 생성한 뷰에서는 팝업창을 제어하기가 쉽다. 하지만 팝업창에서는 상위뷰를 제어하는게 생각처럼 쉽지는 않다. 이럴때 쓸수있는 패턴들이 있다. 대표적으로 Delegate 패턴을 시작으로 NSNotificationCenter, singletone, block, keyValue….등등  시간이 날때마다 하나씩 포스팅을 […]

문자로 되어있는 날자 형식을 NSDate로 바꾸기

자료를 찾아서 사용하다 보면 날자만큼 포멧이 다양한 경우도 드물다. 이런 당신을 위해 애플에서는 NSDateFormatter란걸 만들어 두었다 얏호. 예제는 우주항공청에서 제공하는 27일간의 KP데이터를 사용하겠다 이 파일에는 날자가 “2016 Mar 16″형식으로 되있다. http://services.swpc.noaa.gov/text/27-day-outlook.txt  

  NSDateformatter에 들어가는 yyyy MMM dd 같은 형식에 대해서는 유니코드 기준을 따른다 http://unicode.org/reports/tr35/tr35-4.html#Date_Format_Patterns   예제 다운로드

사용자의 위치 승락 여부 확인 [iOS]

위치 기반 앱을 개발하면 당연히 사용자의 위치를 얻어오는 요청을 한번 이상 하고 이걸 거절할 경우에 따른 예외처리도 매우 중요하다. 사용자의 위치값에 대한 승인여부는 다음과 같은 메소드를 호출하면 확인할 수 있다.

리턴값은 CLAuthorizationStatus 형식으로 오며 헤더파일을 보면 다음과 같이 온다.

    kCLAuthorizationStatusNotDetermined -> [0] 한번도 인증 요청을 안했을 경우. 사용자는 아직 이 앱이 […]

NSArray에서 한글,영문순으로 정렬하기

NSSortDescriptor를 사용하면 숫자, 영문, 한글 순서대로 정렬이 된다. 오늘 요청을 받은게 한글, 영문 순서로 정렬되었으면 하는 요청을 받았다. 인터넷에서 찾은 소스는 배열안에 NSString만 받는걸 기준으로 되있어서 해당 소스를 블록문을 사용해서 안에 있는 오브젝트를 비교하는 형식으로 변경하였다. NSArray 안에 다른 객체별로 클래스를 맞춘후 비교하면 문제 없이 정렬되는것을 확인하였다.

  참조 글 – https://gist.github.com/acidsound/5072229

NSArray 안의 객체를 NSPredicate로 검색하기 [iOS]

개발을 하다보면 배열을 정말 많이 사용한다. 그리고 그 배열안에 있는 데이터를 추가/삭제도 많이 하고 그 배열 안에 데이터가 있는지 없는지 여부에 대해서도 많이 찾아 본다. 배열안에 있는 단순한 값들을 비교 할때는 – (BOOL)containsObject:(ObjectType)anObject; 를 사용하면 배열안에 포함되어있는 여부에 대해서 bool값으로 받을 수 있어 편하게 잘 쓸 수 있다.

  하지만 배열안에 단순한 값이 아닌 […]

클래스를 카테고리를 사용하여 확장하기 [iOS]

Objective-c에는 클래스를 수직적으로 확장 할 수 있도록 상속받아서 확장받는 방법과 수평적으로 확장할 수 있는 카테고리 두가지 방법이 있다. 카테고리의 특징은 해당 클래스에 새로운 변수를 추가 할 수 없고 메소드만 추가 할 수 있다. 처음에는 어디다 쓰지? 싶은 생각이였지만 쓰다보니까 다 방법이 있더라. 내가 만든 클래스보다는 다른 사람이 만든 클래스를 쓸때, 특히 애플에서 기본적으로 제공하는 NSString등의 […]

iOS 프로젝트에 prefix.pch 파일 추가하기

예전에는 프로젝트를 만들면 xxx-prefix.pch 라는 파일이 있었는데 언제부터인가 프로젝트를 생성하면 이 파일이 사라져서 생성이 되었다. 이 prefix라는게 어떤 용도냐면 프로젝트에 전체적으로 적용 되는 설정이다 예를 들어서 앱 전체에 사용되는 앱 타이틀이 있다 해당 뷰컨트롤러마다 @”title”라고 적어주면 만약 타이틀이 변경되면 해당 뷰컨트롤러마다 다 변경을 해줘야한다. 이럴때 prefix파일에 define을 사용하여 앱 타이틀을 적고 앱 안에서 해당 설정을 […]

UIBarStyle 바꾸기 [iOS]

앱을 개발하면 위의 화면처럼 상단 네비게이션바의 색상을 어두운 색으로 사용할때도 있다. 그럴때 상단의 스테이터스바 글자가 검은색이여서 안보이는데 이럴때 상단 스테이터스바 글자의 색상을 하얀색으로 바꿔서 사용해왔다. 코드는 다음과 같다.

그런데!!!

iOS9 부터 리젝됬다. 아 진짜 왜… 해당 기능을 사용하라는데 헤더파일에 가서 해당 메소드에 주석을 보면 해당 메소드를 오버라이드 해서 사용하라고 써져있다.

그런데! 왜! […]