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

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

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

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

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

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

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

UIAlertController 사용하기 [UIAlertview, UIAlertController]

 

UIAlertView는 예전부터 사용자에게 경고나 반드시 필요한 메시지를 보여주기 위해 자주 사용되어왔다. 그런데 이게 iOS 9에서 디플리케이티드 되어가지고 사용할 수 없게 되었다. 내용을 읽어보면 새로 추가된 UIAlertController을 사용하라고 한다. 간단한 예제를 만들었다.

사용법은 UIAlertController을 생성하고 거기에 버튼을 UIAlertAction으로 하나씩 추가해준다. 예전과 같이 델리게이트 형식이 아닌 블록형식으로 액션을 작업 할 수 있어서 사용하기가 더 […]

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

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

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

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

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

iOS NSDictionary, NSArray 사용하기 – 1

기존 문법이라고 하기에는 꽤나 오래됬지만 예전에는 NSDictionary 나 NSArray를 사용할때 굉장히 길게 쓰던 문법이 Objective-c 2.0으로 되면서 굉장히 간략해지고 편해졌다. 간단한 예제를 통해 구 문법과 신문법 예제를 만들어두었다.  

-구문법  

-신문법

-출력 화면   예제파일 다운로드

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

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

UIBarStyle 바꾸기 [iOS]

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

그런데!!!

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

그런데! 왜! […]

AFNetworking 3.0 사용하기 [openweathermap을 사용하여 현재 날씨 가져오기]- 1

개발을 하면서 하나의 프로젝트를 하는데 아무리 단순한 앱이여도 안에 들어가보면 많은 기능들이 들어가있다. 그 기능들을 다 하나하나 손으로 만들면 최적화나 개발능력에 큰 도움이 되겠지만 시간이 그걸 허락해주지 않을때가 많다 보니 나는 오픈 소스를 사용하는것을 좋아한다. 그중에 iOS/OSX 앱을 만들때 네트워크 관련기능을 쓰게 되면서 세션, 에러, 다운로드, 진행상황 등등….처리해야할게 많은데 이럴때AFNetworking을 짠 하고 사용하면 http 통신 […]

iOS 프로젝트에 코코아팟 사용하기 CocoaPods

프로젝트를 진행하면서 모든 기능을 혼자서 혹은 내부에서 개발하여 진행하기란 매우 힘들고 비용과 시간이 많이 들어간다. 나는 깃헙을 애용하고 ‘이런 기능이 필요한데…’ 싶으면 일단 깃헙에서 먼저 검색을 해본다. 이렇게 깃헙에서 프로젝트를 받아 내 소스에 적용을 하면서 처음에는 잘 작동한다. 그런데 1~2년정도 지나서 해당 프로젝트에 쓰인 기능이 디플리케이티드 되서 리뷰 올리다가 리젝 먹으면 그 기분이란 정말 억울하기 […]