전체 글 18

[Swift] TextField, PickerView 가 있는 Alert 창 만들기

IoS의 장점 아닌 장점은 너무나 깔끔한 UI를 자랑한다는 것 입니다. 뭐랄까 독특한 방식으로 기존의 UI들을 대채하고 있는데 왜 다르게 했을까 하면서도 막상 사용하면 불편하지 않은 그런느낌? 아마도 그런느낌이 더 Swift라는 언어로 개발을 하는데 매력적인 부분으로 다가오는 것 같다. 안드로이드에서 커스텀Alert을 만드는건 너무나 쉬웠다. 그래서 이것저것 다 집어넣는게 쉬웠는데 왠지 모르게 IOS에서는 이것저것 집어넣는 Alert창을 만드는건 쉽지 않았다.... 차라리 하나의 컨트롤러를 만들어서 해버리면 쉬웠지만 내가 생각한 그런느낌은 아니었다... 결국 이 모든건 본인들의 라이브러리를 쓰라는 뜻이 아닐까 싶은데... 생각해보니 기존 IOS 앱들을 보면 다들 비슷하게 IOS고유의 스타일을 가지고 있는..

[Swift] NavigationController 사용시 코드로 Navigation Item 수정하기 & Swift 기본 이미지 사용하기(System Image)

IOS 프로그램을 사용할때 Navigation Controller의 필요성은 두말하면 입 아픈 수준입니다. Navigation Controller를 이용하여 화면 전환을 할때 let pushVC = self.storyboard?.instantiateViewController(withIdentifier: "loginVC") as! LoginController pushVC.dataReceived = self.bleManager.peripherals[indexPath.row].name self.navigationController?.pushViewController(pushVC, animated: true) 네비게이션 스택에 컨트롤러를 쌓는(push) 형식으로 맨위의 화면을 바꿔 줍니다. 예를들어 네비게이션 ..

[Swift] Cocoapods 이용하여 MAlert 라이브러리 사용하기

안녕하세요 오늘은 Xcode의 외부 라이브러리 설치 툴인 Cocoapods 를 이용하여 간단하게 Alert창을 띄워보도록 하겠습니다. 물론 Custom으로 띄워도 되지만 애니메이션이라던지 디자인 등등 신경써야할것도 많고 반복적으로 불러주어야 하니 Framework를 활용하기로 했습니다. 이전에 안드로이드에 KAlert이나 웹 에서 필수적인 SweetAlert을 사용하던걸 추억하여... 일단 먼저 CocoaPods를 다운받아야 합니다. Homebrew의 Xcode용 이라고 보시면 될듯합니다. 1. CocoaPods 설치 cocoapods.org/ CocoaPods.org CocoaPods is built with Ruby and is installable with the default Ruby availa..

[Swift] 형 변환 Character to Byte(UInt8) / Byte(UInt8) to Character

Swift에서는 유독 Character에 인색한것 같다는 생각이 든다.... 아직 내가 너무 실력이 부족하니 어쩔 수 없지만 너무 특별한 케이스가 실제 코딩하다가 필요하게되어 혹시 도움이 되실까 올려봅니다. Character -> Byte(UInt8) let character: Character = "o" let byte: UInt8 = String(character).utf8.map{UInt8($0)}[0] Byte(UInt8) -> Character let byte2: UInt8 = 10 let characterFromByte: Character = Character(UnicodeScalar(byte2)) Swift에서는 Character를 한글자 String으로 취급하는 수준인것 같습니다. Unic..

[Swift] Java 문법을 Swift에서 사용하기 - 배열,문자열 중간 추출 (System.arraycopy, .subString) 등

회사에서 Java 소스코드르 Swift로 변환 중인데 생각보다 많은 부분이 다른거 같아서 제가 알아보는거 공유합니다. 여러분들 검색에 걸리길 바라며... 프로그래밍을 하다보면 특정 배열이나 String을 자르거나 붙힐 필요가 생기기 마련입니다. 데이터를 파싱한다던가 글자를 바꿔줘야 할때 Java 문법을 알고 Swift 문법을 그걸 기반으로 검색을 해봤습니다. 1. JAVA System.arraycopy 아마도 많은 분들이 프로토콜 같은거 파싱할때 많이 쓰이실것 같습니다. Java int[] a = { 0, 1, 1, 2, 3, 5, 8, 13 }; int startIndex = 3; int length = 4; int[] b = new int[length]; System.arraycopy(a, start..

[Swift] Framework (Library) 만들고 프로젝트에 추가하기

프로토콜 파일이나 특정 모듈을 만들때 필요한것이 바로 라이브러리화 시켜서 집어 넣는것입니다. 안드로이드에서는 .aar 파일로 만들어서 추가하였는데 Swift에서는 다릅니다. 일단 만들고자 하는 프레임워크를 만들어야합니다. 작성자 버전 참고해주세요 Swift 5.3.2 Xcode : 12.4 일단 기본적으로 새롭게 프로젝트를 만들어 줍니다. 내리다 보면 아래와 같이 Framework라고 있습니다. 프레임워크 프로젝트를 만들어주시고 help.xcodeproj 라는 xcode프로젝트 파일도 생성됩니다. 새롭게 .swift 파일을 만들어 줍니다. 저는 help.swift로 만들겠습니다. 그리고 원하는 프레임워크를 개발하시면 됩니다. *초보적인 실수로 public 접근지정자 까먹으시면 안됩니다. 나중에 참조할때 ..

[Android] BLE 통신 애플리케이션 개발하기 #1 - 개발이전에 알아두면 좋을 정보들

안녕하십니까 훙리입니다. 요즘 회사에서 안드로이드와 IOS 를 이용하여 Bluetooth BLE 애플리케이션을 만들고 있습니다. 아직 신입으로 들어온지 반년밖에 되지 않았기 때문에 많이 부족합니다. 피드백 주시면 감사드리겠습니다. 단순한 기능이지만 낯선 기능이기에 제가 공부하면서 알게된 부분에 대해서 작성을 해보도록 하겠습니다. 안드로이드와 IOS가 차이가 나기 때문에 각자 작성을 해보도록 하겠습니다. 일단 필요한 부분을 설명하기전에 블루투스에 대한 이해가 필요합니다. 물론 구글링하면 정말 정말 많기 때문에 약식으로 금방 금방 넘어가겠습니다. 1. BLE 블루투스에 대한 이해 BLE란 저전력 블루투스를 영어로 표현한 것 입니다. Bluetooth Low Energy 의 약자 입니다. 블루투스 4.0 모듈..

[Swift] EXC_BAD_ACCESS 에러 해결

최근 IOS 개발을 Swift로 배우며 여러가지 학습을 하던 중 독특한 크래쉬를 발견했습니다. 에러 로그가 안떠서 뭐지 ? 했는데 일단 해당 에러는 EXC_BAD_ACCESS (code : 1 , address : ~~~) 라고만 쓰여있고 다른건 안 써있더라구요. Thread 1이라니 메인스레드인건 알겠는데 과연 어디가 정확히 문제일까요? Thread 1: EXC_BAD_ACCESS 열심히 구글링한결과 일단 이 에러를 찾기 위해서는 1. XCode 상단 Product 메뉴 -> [Scheme] -> [Edit Scheme] 탭을 클릭합니다. 2. Run ->[Diagnostics] 탭에서 -> [Enable Zombie Objects] 체크박스를 체크하고 닫습니다. 그러고나서 다시 디버그를 하면 NSZo..