본문 바로가기

728x90

난 iOS개발자

(53)
현재 네트워크 정보 가져오기 CNCopyCurrentNetworkInfo CNCopyCurrentNetworkInfo를 통해 현재 디바이스에서 사용중인 네트워크의 정보를 가져올 수 있다. CNCopyCurrentNetworkInfo사용 전에 알아야 할 것 아래 네 가지의 조건중 하나를 충족해야 정상적인 동작이 가능하다. 1. 앱이 위치권한(core location)수집에 대한 사용자의 수집을 받아야 한다. 2. 앱이 NEHotspotConfiguration API를 통해 네트워크를 구성한 경우 3. VPN 활성화 4. 응용 프로그램에 활성 NEDNSSettingsManager 구성이 설치된 경우(NEDNSSettingManager ? 잘 모름) 요구사항이 충족된다면 네트워크 정보를 리턴하고, 그러지 않을 경우 null을 갖는다. Deprecated CNCopyCurrentNe..
NEHotspotNetwork를 이용한 현재 Wi-Fi 상태 가져오기 Wi-Fi연결에 대한 이전 글에 이은 내용 NEHotspotNetwork는 명령 또는 응답과 관련된 Wi-Fi네트워크에 대한 정보다. 명령또는 응답이라는 말이 무엇을 말하는지 잘 모르겠지만... 아래와 같은 속성을 지니고 있다. 이전 게시물에서 NEHotspotConfigurationManager의 apply호출은 Wi-Fi 연결 성공여부를 알 수 없다고 했다. 대신 연결 시도 결과 error 를 받은 후, NEHotspotNetwork의 fetchCurrent를 호출하여 현재 Wi-Fi의 정보를 확인하면 된다. class func fetchCurrent(completionHandler: @escaping (NEHotspotNetwork?) -> Void) 1. Signing & Capabilities에..
NEHotspotConfigurationManager를 이용한 Wi-Fi 연결하기 NEHotspotConfigurationManager Wi-Fi 네트웤의 핫스팟 구성을 적용하고 제거하는 관리자 NEHotspotConfiguration을 생성하여 Wi-Fi 연결을 시도할 수 있다. 주의! 앱이 NEHotspotConfigurationManager를 통해 새 핫스판 구성을 만들고 이를 Wi-Fi 네트워크에 적용하거나 이전에 구성된 네트워크를 업데이트하려고 시도하면 기기에서 사용자에게 명시적인 동의를 받아야만 한다. 사용자의 동의가 이뤄지지 않을 경우 동작이 불가하다. 1. 코드 작성전에 Signing & Capabilities에서 '+Capability' 버튼을 눌러 Hotspot Configuration을 추가한다. 2. import! import NetworkExtension imp..
연락처 저장화면 호출하기 CNContactViewController 전화번호를 저장하면서 직접 입력이 가능한 컨트롤러를 불러야 할 때 . 아래와 같이 사용한다. CNContactViewController는 하나의 연락처에 대한 정보를 편집 할 수 있는데 , 편집말고도 새 연락처를 저장하것이 가능하다. CNContactViewController를 생성하면서 forNewContact로 넘겨주는 인자값으로 CNContact 클래스객체를 넘겨주면 된다. 이때 CNContact는 immutable한 속성이므로 CNContact를 상속했고 Mutable한 CNMutableContact를 넘겨주자. let contact = CNMutableContact() contact.phoneNumbers contact.familyName contact.postalAddresses 주소록 작성시..
UITextField LeftPadding 텍스트 필드에 디자인을 적용하다보면 입력되는 텍스트 옆으로 padding이 들어가야 할 경우가 생긴다. 이때 UITextField의 leftView를 사용해서 간단하게 padding을 넣어줄 수 있다. leftView에 대한 설명을 한 번 보자면... TextField의 leftView를 설명한 부분 왼쪽 공간에 자리한 leftView가 있는데 이것은 optional이므로 여기에 내가 원하는 만큼 넓이를 가진 view를 넣어주게 되면 그 공간이 띄어진 것 처럼 보여질 수 있다. 이 때 텍스트 필드의 색상에 따라 삽입되는 paddingView의 background색상을 맞춰줘야하는것은 필수! clear컬러로 둬서 뒤가 보이도록 두는것도 방법이다. 그리고 leftview에 이미지나 또 다른 view를 add..
Equatable Equatable은 Equatable을 채택한 대상끼리 같은 값인지 확인할때 사용하는 Protocol이다. 간단히 설명을 보면 Equatable 을 채택했을 경우 == 연산자와 != 연산자를 사용하여 같음 또는 같지 않음을 확인할 수 있고 SwiftStandardLibrary의 대부분 타입이 이 Equatable Protocol을 따른다고 한다. 우리가 흔히 사용하는 Int, Float같은 자료형은 모두 ==, != 연산자를 통해 값을 비교하는데 이는 Int,Float같은 자료형이 Equatable Protocol을 채택했기 때문이다. Int타입의 변수를 선언하고 command+Click 으로 그 정의를 따라가보면 Int 옆에 채택한 Protocol 이 나오는데 이 프로토콜들의 뿌리를 따라가다보면 Equ..
RTL 서비스 국가에 따라 텍스트 또는 UI배치가 좌우 반전이 되야할 때도 있다. 아랍문화권의 국가는 글을 작성할 때 좌에서 우로(Left-to-Right) 작성하는 것이 아닌 우에서 좌로(Right-to-Left) 작성하는데 이에 따라 앱에서도 좌우반전을 시켜줘야 하는것이다. 해당 국가로 서비스를 하려면 당연히..! 우리나라도 100년 전까지만 해도 RTL방식으로 글을 작성하고 있었다고 한다. https://hyperconnect.github.io/2020/05/30/MENA-service-cautions-part1.html MENA(중동 및 북아프리카) 지역 서비스 개발 시 고려해야 할 문화 차이 아랍 문자를 사용하는 지역에 서비스를 런칭하기 위해 신경쓰면 좋은 점들을 소개합니다. hyperconnect.g..
개행(\n) 없이 두 줄 이상의 문자열 할당하기 보통 문자열을 표현 할 때, 앞뒤로 " (큰따옴표)를 붙여서 문자열을 만든다. 이때 개행을 하려하면 문자열 중간중간에 \n(newLine)을 삽입해줘야 하는데 , \n삽입 없이 큰따옴표 세개를 앞뒤에 붙이면 따로 개행문자를 넣지 않고도 똑같은 표현이 가능하다. 들여쓰기는 마지막 큰따옴표에서 왼쪽 정렬기준으로 보면되는데 아래 그림을 보면 이해하기 쉽다. 아래 그림은 print를 통해 문자열을 콘솔로 나타냈다.
Swift Package 써보기 (feat * XCode13) 이전까지는 SwiftPackage에 대해 잘 모르고 있었는데 , 이번 WWDC2021에서 SwiftPackage 를 소개 하길래 제대로 알게됐다. 보니까 Cocoapods의 Library의존성관리 역할을 xcode에서 지원하는 역할로 보인다. ㅇㅇ 맞다. 난 xcode13beta버전을 받아서 확인해봤다. 지금까지 릴리즈된 xcode에는 지금과 같은 GUI가 아닐수 있으니 참고. 일단 하나의 Library를 새 프로젝트에 추가해보겠다. 추가할 라이브러리는 Alamofire 시작해보자. 아래 세가지 경로로 Package 검색창을 띄울 수 있다. 1. File-> Add Packages 2. TARGETS-> Frameworks, Libraries, and Embedded Content 3. swift파일에서..
DerivedData 삭제 Xcode를 사용하다보면 가끔 프로젝트의 캐시된 데이터가 문제를 발생시킬 때도 있다. 정확히는 그 문제가 뭐였는지 기억은 잘 안나지만 해당 문제를 해결하기 위해 DerviedData를 삭제해보라는 조언들을 찾아볼 수 있었다. 뭐만하면 다 지우라한다... 실제로 DerivedData폴더를 삭제하고 문제가 해결된것을 겪은적이 있었는데, DerivedData는 Xcode를 사용하면서 발생하는 부산물이라 해야할까, 각종 프로젝트를 진행하며 저장된 파일들이 넘쳐난다. 맥 용량관리 차원에서도 DerivedData폴더를 삭제해주기도 한다. DerivedData의 하위 폴더들은 프로젝트를 build하면 다시 생겨나므로 삭제해도 큰 문제가 없다. 어떤 블로그의 경험담을 보면 DerivedData폴더의 하위 폴더들을 삭제..

728x90