Swift(14)
-
[Swift] Properties
Stored Property : 가장 일반적으로 사용하는 형태로, 선언과 동시에 그 형태가 변하지 않음. var는 변수, let은 상수. Computed Property : 변수에 값을 할당할 때 값이 상황에 맞게 알아서 바뀌어 주길 바랄 때 유용. 이름 그대로 값 할당 전에 연산이 필요한데, 그렇다고 함수를 생성하기엔 번거로운 경우 사용. Stored Property는 선언한 후로 형태를 변경할 수 없기 때문에 등장. 조건 1) let이 아닌 var로 지정할 것(전달되는 값에 따라 다른 값을 출력하므로) 조건 2) 자료형을 명시할 것 Computed Property는 2가지 형태가 있다. Getter : 미리 계획한 함수(연산)는 그대로이며, 그것으로부터 return된 값이 필요한 경우 사용. Sett..
2020.04.22 -
[Swift] UISearchBar
UITableViewController를 통째로 스토리보드에 추가했다면, 이후에 검색상자를 그 위에 추가할 때 반드시 아래 사진처럼 Search Bar와 ViewController를 연결해주어야 한다. 그 후에 바로 나오는 팝업상자에서 delegate를 선택한다.
2020.04.21 -
[Swift] Core Data
DB용어 Core Data table(relation), class entity attribute(property), column attribute record(tuple), row NSManagedObject Core Data는 데이터베이스 방식이다. DB에 여러 개의 테이블이 있다면, Core Data에서는 테이블을 Entity라고 부른다. DB를 SQLite 같은 DBMS에서 테이블 관계를 관리하는 것처럼, Core Data에는 Persistent Container 에서 테이블들을 모으고, Context가 User와 통신하며 자료 간 관계를 설정한다. let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.v..
2020.04.20 -
[Swift] Sandbox : 보안을 위한 App별 독립공간 (feat. NSCoder)
Sandbox가 뭘까? 보안을 위한 그 App만의 독립된 공간이다.(venv 같은 느낌이 든다) Sandbox 덕분에 App은 로컬 디스크에 자기만의 디렉토리를 가지며, 서로 다른 App끼리는 접근할 수 없다. 그래서 App은 Sandbox라는 울타리 안에 자기만의 정보들을 안전하게 저장할 수 있는 것이다.(Sandbox가 없다면 악성코드로 인해 내 데이터가 유출될 수도 있다!) let dataFilePath = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first?.appendingPathComponent("MyList.plist") 그리고 높은 보안을 가진 Apple ID나 iCloud 기술은, 새로운 iPhone으로..
2020.04.19 -
[Swift] Attempt to set a non-property-list object : 커스터마이징한 데이터 타입은 UserDefault에 담지 말자!
이는 UserDefault를 배우면 마주치게 되는 오류이다. UserDefault는 App 실행 시 유저가 App 내에서 설정한 값들을 저장하기 위한 용도로 사용되어야 한다. 여기서 "설정한 값"은 매우 작고 단순한 데이터여야 한다. ex)유저가 커스텀화한 것으로서 App에서의 선호 볼륨 값(Float), 최고 점수(Int), 유저 닉네임(String), 자동실행 여부(Bool) 또는 이 앱이 설치 후 처음 실행되고 있는지에 따른 도움말 표시 여부까지(!) 즉 이 작은 데이터들은 Key-Value 형태로 .plist에 가볍게 저장되는 것이다. 여기에 Array나 Dictionary 같이 메모리를 많이 잡아먹는 무거운 녀석들을 담는다면, 간단한 정보 저장을 담당하는 UserDefault의 존재 목적과 철학..
2020.04.19 -
[Swift] 앱의 생애주기 App Lifecycle
실행 -> 눈에 보임 -> 백그라운드로 돌아감 -> 메모리 해제 func application(_:didFinishLaunchingWithOptions:) AppDelegate는 앱을 실행했어요 func scene(_:willConnectTo:options:) SceneDelegate는 화면을 생성했고 새 창을 열거래요 viewDidLoad() ViewController는 띄워질 화면의 정보를 알아왔어요 viewWillAppear() ViewController가 그 화면을 곧 띄울 거에요 func sceneWillEnterForeground() SceneDelegate는 그 화면을 제일 앞에 위치시킨대요 func sceneDidBecomeActive() SceneDelegate가 그 화면을 활성화시킨대요..
2020.04.16