SWIFT 10

[Swift] 기종별 해상도 맞추는 View resize ( Constraint 주지 않고 )

IOS 를 개발하고 기능이나 UI 를 거의다 끝냈다고 판단 했을때.... 어느정도 예상은 했지만 이렇게 심하게 뭉게질줄 몰랐습니다.... 미리미리 체크했어야 하는데 Android 의 경우 워낙 기종이 다양하기 때문에 이러한 해상도를 맞추는게 쉽지 않았을것 같았지만 또 의외로 Constraint view가 잘되어 있다고 생각합니다. Ios는 StoryBoard를 사용할때 또 이러한 Constraint 를 맞춰주는게 생각보다 좀 까다로운것 같았습니다. 물론 개념자체는 비슷했습니다. 기존에 Story Board 사용시 Constraint 없이 그냥 이것저것 붙여서 만들었기 때문에 처음으로 작은 Iphone으로 해상도를 맞추려고 한 순간 모든 틀이 무너졌습니다. 그리고 일일히 Constraint 를 주며 개발하..

[Swift] Argument Label 함수 Parameter 중간에 이름이?

Swift라는 언어를 급하게 배운것에 대한 폐해라고 생각합니다 ㅎ. 부끄럽기도 한 부분이지만 같은 햇갈림을 가지고 있을 사람들에게 조금이나마 도움이 되고자 작성을 합니다. 처음으로 이 문제에 대해서 생각한것은 Main class에서 UITableViewDataSource, UITableViewDelegate 를 extends 했을때 관심을 가지기 시작했다. 이중 UITableViewDataSource를 extends 할 시 아래와 같은 필수 구현 함수들이 나옵니다. func tableView(_ tableView : UITableView, cellForRowAt indexPath : IndexPath) { // tableView 에 표시할 셀을 요청하는 메서드 } func tableView(_ table..

[Swift] UITableView 스크롤시 값이 중복되는 현상

Swift 개발을 하면서 tableView 를 만드는 상황은 아마 매번 있지 않을까 싶습니다. 아직 초보자인 저로써는 UITableView를 만들면서 크나큰 난관에 봉착하였는데... 그건 바로 테이블 뷰의 크기를 미리 정해놓고 그 안에 값을 하나하나 추가하는 기능을 구현하는 과정에서 있었습니다. 제가 원한거는 10개의 테이블 row에서 현재 배열에 들어있는 값 하나만을 출력하고 싶었으나 . 안보이는 부분의 스크롤을 내리는 순간 그 밑에도 한개가 추가되고 계속 오르락 내리락 하면서 맨 윗칸 혹은 아랫칸에 정보가 씌여진다는 것 입니다. 이와 같이 row index 가 0 일때만 text 값을 입력해 주었는데 안보이는 tableview가 보이면서 데이터가 reload 되기 때문입니다 . 제가 이렇게 작성을 하..

[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 접근지정자 까먹으시면 안됩니다. 나중에 참조할때 ..

[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..