swift & iOS 63

[swift] 함수에서 여러 개의 값을 반환하기 (튜플)

튜플 자료형을 사용하여 함수에서 여러 개의 값을 반환할 수 있다. 아래 함수는 배열에서 가장 작은 정수, 가장 큰 정수를 찾아 각각 min, max라는 이름이 붙여진 (min: 숫자, max: 숫자) 이렇게 생긴 튜플 자료형을 반환한다. // 출처: https://docs.swift.org/swift-book/LanguageGuide/Functions.html#ID164 func minMax(array: [Int]) -> (min: Int, max: Int) { var currentMin = array[0] var currentMax = array[0] for val in array[1.. currentMax { currentMax = val } } return (currentMin, currentMax..

swift & iOS/swift 2022.01.27

[xcode] 버튼 모서리를 둥글게 하기

xcode에서 소스 코드로 버튼 모서리를 둥글게 할 수도 있지만 xcode > identify inspector > User Defined Runtime Attributes 에서 + 버튼을 누르고 아래와 같이 입력하면 된다. Key Path: layer.cornerRadius Type: Number Value: 모서리를 둥글게 하고 싶은만큼 숫자 입력 이렇게 하고 나서 시뮬레이터를 작동시키면 모서리가 둥글게 된 버튼을 볼 수 있다.

[xcode] 텍스트 필드에 숫자 키보드 띄우기 (keyboard type)

텍스트 필드 처럼 사용자 입력을 받을 때 입력 받을 내용에 받는 키보드를 띄우는 것이 맞다고 생각한다. 숫자를 입력 받을거면 숫자 키보드가 뜨고, 전화번호를 입력 받을 경우에는 전화번호를 입력하기 편한 키보드가 뜨는 것이 사용자 경험에 좋다. 전화번호를 입력하라고 해놓고서는 일반 키보드가 뜨면 짜증난다... 아무튼 xcode에서 텍스트 필드를 눌렀을 때 나올 키보드 타입을 정하려면 오른쪽 attribute inspector 에서 Keyboard Type 에서 원하는 타입의 키보드를 선택하면 된다. UITextField 클래스가 채택하는 UITextInputTraits 프로토콜에 keyboardType 프로퍼티가 있다. (UIKeyboardType 이라는 enum 타입)

[ios 개발] iOS, iPadOs 버전별 사용 현황 확인하기

웹이건 모바일이건 서비스를 개발할 때 어디부터 지원할 것인지 정해야 한다. 애플 쪽도 아이폰과 아이패드의 몇 퍼센트가 어떤 ios, iPadOs 을 사용하고 있는지 알려주는 사이트가 있다. https://developer.apple.com/kr/support/app-store App Store - 지원 - Apple Developer App Store 사용자는 App Store에서 iPhone, iPad, Mac, Apple TV 및 Apple Watch용 앱을 쉽게 찾고 구입하고 다운로드할 수 있습니다. Apple Developer Program에 등록하여 앱을 디자인 및 개발하고 App Store에 앱을 배포 developer.apple.com 현재 2022년 1월 기준으로 아이폰 기기에서는 72%가..

[swift] 문자열 끝에서 자르기 dropLast()

출처: https://developer.apple.com/documentation/swift/string/2893517-droplast Apple Developer Documentation developer.apple.com 문자열을 끝내서 잘라낸 후 남은 문자열만 취하고 싶으면 dropLast(:) 메소드를 사용하면 된다. let x = "10%" print(x.dropLast()) // "10" print(x.dropLast(1)) // "10" 위와 같음 print(x.dropLast(0)) // "10%" 끝에서 아무것도 잘라내지 않음 다만 잘라낸 후 반환하는 문자열의 타입은 String이 아닌 Substring이기 때문에 String이 필요하다면 타입을 바꿔줘야 한다. print(type(of:..

swift & iOS/swift 2022.01.23

[swift] 후행 클로저 (trailing closure)

https://what-whale-wants-to-say-is.tistory.com/70 [swift] 클로저 closure (feat. 함수) 스위프트의 함수는 '1급 객체'이다. 1급 객체의 특징은 다음과 같다. - 변수에 저장할 수 있음 - argument로 전달할 수 있음 - 리턴값으로 사용할 수 있음 제목은 클로저라고 써놓고는 왜 함수를 얘기 what-whale-wants-to-say-is.tistory.com 저번에 클로저에 대해 정리해서 포스팅한 적이 있는데 너무 길어져서 후행 클로저 부분을 마저 하지 못했다. 마저 해야지 어떡해 그럼...... 이번에도 공식문서를 알차게 참고하였다. 출처: https://docs.swift.org/swift-book/LanguageGuide/Closures..

swift & iOS/swift 2022.01.23

[swift] 열거형 enumeration 그리고 enum 배열처럼 사용하기

enumeration(줄여서 enum)은 특정 값들 중에서 하나만 선택되도록 하며 이 외에 원하지 않는 값이 선택되는 것을 방지한다. swift 공식문서에는 enumeration에 대해 이렇게 나와있다. (관련 있는 값들의 그룹에 대한 타입을 정의하여 그 타입에 맞는, 그 그룹에 속한 값들만 사용할 수 있게 해준다.) An enumeration defines a common type for a group of related values and enables you to work with those values in a type-safe way within your code. 출처: https://docs.swift.org/swift-book/LanguageGuide/Enumerations.html 예를 ..

swift & iOS/swift 2022.01.22

[swift] failable initializer

클래스, 구조체, 열거형을 초기화 할 때 필요한 프로퍼티를 모두 제공하지 않거나 유효한 프로터피를 제공하지 않거나 아니면 다른 어떤 이유로 초기화가 실패할 수 있다. 그런 경우에 대비에 하나 이상의 failable initializer를 선언할 수 있다. init 뒤에 ? 만 붙이면 된다. 대신 아래처럼 parameter의 이름과 타입이 같은 init과 init? 을 동시에 선언할 수는 없다. // 아래처럼 init과 init?의 parameter의 타입과 이름이 똑같을 수 없음 class User { let age: Int let name: String init(age: Int, name: String) { // ... } init?(age: Int, name: String) { // ... } } 예..

swift & iOS/swift 2022.01.21