본문 바로가기

Apple

Swift 05 - 프로토콜(Protocol) Swift 에서 프로토콜은 어떤 것이 가져야만 하는 어떤 프로퍼티와 메서드를 설명하는 방법이다. Swift에게 해당 프로토콜에서 사용하는 타입을 알려주는 것이다. 아래 코드를 보면 BackNumber 를 프로토콜로 작성했고 그 내부에는 backNumber가 int 타입으로 작성되어있다. 이 프로토콜은 get과 set으로 읽기 쓰기 가능한 int 타입의 backNumber를 필요로 한다는 뜻이다. TottenhamPlayer struct에서 BackNumber를 준수하기로 했고 프로퍼티로 그대로 backNumber를 int 타입으로 작성해 주어야 한다. protocol BackNumber { var backNumber: Int { get set } } struct TottenhamPlayer: BackNu..
Swift 04 - 클래스(class) class 프로퍼티와 메서드로 새로운 타입을 만들 수 있다는 점에서 구조체와 공통점이 있지만, 차이점이 있다. 첫번째 차이점은 memberwise initializer가 기본으로 제공되지 않는다는 점이다. 이것은 class에 프로퍼티가 있는 경우 꼭 자체 initializer를 함께 작성해야 한다는 점이다. class ManchesterCityPlayers { var playerName: String var playerNubmer: Int init(playerName: String, playerNubmer: Int) { self.playerName = playerName self.playerNubmer = playerNubmer } } // 나머지는 struct와 같다. let manCityPlayers..
Swift 03 - 구조체(struct) ❑ Struct(구조체 : structure) \Swift에서 String, Int 등과 같이 타입을 만들 수도 있는데, 가장 일반적인 방법은 구조체(struct)를 선언하는 것이다. struct에는 자체변수와 상수, 함수를 준다음 원하는대로 생성하고 사용할 수 있다. 아래 그림 처럼 String에 커맨드 + 클릭을 하면 String 타입에 대한 정의를 볼 수 있고.... String 타입이 struct임을 확인할 수 있다.. ❑ Property, Stored Property 구조체에 내부에 선언한 변수를 프로퍼티(property)라고 한다. 구조체로 타입을 정의하였으면 구조체의 인스턴스를 만들어 사용할 수 있다. Tottenham struct에 선언한 playerName, backNumberr과 같이 ..
Swift 02 - 클로저(Closure) ❑ 클로저 Swift에서는 문자열(String)이나 정수(Int)와 같은 다른 타입들처럼 타입으로 함수를 사용할 수 있다. 이 말은 함수를 만들어 변수에 할당하고 해당 변수를 사용해 함수를 호출하고 해당 함수를 매개변수로 다른함수에 저장하는 등의 기능을 할 수 있다는 뜻이다. 이런 식으로 사용하는 함수를 Closure(클로저)라고 한다. 함수 동작 방식과 유사하지만 다른 점이 있다. SwiftUI에서 클로저 정말 많이 사용하게 된다. let sprint = { print("손흥민이 스프린트한디.") } sprint() 변수에 할당하는 클로저는 함수(function)와는 달리 따로 이름이 없고 변수에 그대로 할당한다. 할당한 변수명을 함수와 같이 호출하여 사용할 수 있다. 작성된 클로저를 보면 파라미터(p..
Swift 01 - 함수(function) 함수(function)는 코드를 재사용할 때 유용하다. 필요한 함수를 작성해 이곳저곳에서 그 함수를 실행할 수 있다. 같은 기능을 하는 코드를 여러 번 작성하는 것은 비효율적이기 때문에 함수를 사용하면 효율적인 코드를 작성할 수 있다. Swift 함수는 func 라는 키워드로 시작한다. 함수를 실행하는 것을 함수호출이라고 한다. // 토트넘 설명을 출력하는 함수의 예시 func printTottehamDescription() { let mainDescription = """ 토트넘은 영국 잉글랜드 프리미어리그의 프로축구클럽으로 \ 연고지는 런던, \ 홈 구장은 토트넘 핫스퍼 스타디움이다 """ print(mainDescription) } // 선언한 함수를 사용 printTottehamDescriptio..
firebase install error/fail cocoa pod 으로 firebase 설치 도중 에러 발생 [!] Oh no, an error occurred. 라는 메시지와 함께 Stack CocoaPods : 1.9.1 Ruby : ruby 2.6.3p62 (2019-04-16 revision 67580) [universal.x86_64-darwin19] RubyGems : 3.0.3 Host : Mac OS X 10.15.3 (19D76) Xcode : 11.4.1 (11E503a) Git : git version 2.24.2 (Apple Git-127) Ruby lib dir : /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib Repositories : trunk - CDN - ..
Swift > awakeFromNib() Swift > awakeFromNib() Interface Builder 아카이브 또는 Nib파일에서 로드된 서비스를 위한 리시버를 준비한다(?) Declaration func awakeFromNib() Discussion 아카이브의 모든 객체가 로드되고 초기화된 이후에, nib-loading 인프라스트럭처는 nib archive로부터 재생성된 각 객체에게 awakeFromNib 메시지를 보낸다. 객체가 awakeFromNib 메시지를 수신할 때, 모든 outlet과 action 연결(connection)이 이미 설정됐음을 보장한다. 부모 클래스에 필요한 어떤 부가적인 초기화를 수행하기위한 기회를 주려면 awakeFromNib의 super implementation을 호출해야한다. 이 메서드의 defau..
Swift > Array Swift > Array > firstIndex(of: ) > 지정한 값(element)이 컬렉션(collection - Array, Dictionary)에 나타나는 첫번째 인덱스를 반환한다 Declaration func firstIndex(of element: Element) -> Int? Return Value : element가 있는 첫번째 인덱스를 return한다. element가 컬렉션에 없으면 nil이 return 된다. Example var students = ["Ben", "Ivy", "Jordell", "Maxime"] let i = students.firstIndex(of: "Maxime") print(i!) // 3 var students = ["Ben", "Ivy", "Jordell..