컴퓨터언어(271)
-
[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 -
[Git] 헷갈리는 merge, rebase, cherry-pick 정리
git 명령어를 치는 그 순간이 바로 작업 영역이다. 거기가 바로 HEAD다. git merge X : 현재 작업중인 브랜치(또는 HEAD가 분리되어 있다면 그 해당 커밋)가 갑임. X가 내 기준으로 합쳐져야 함. Y자로 합침. git rebase X : X가 갑임. 현재 작업중인 브랜치(또는 HEAD가 분리되어 있다면 그 해당 커밋)가 복사되어 X의 후속편으로 달라붙게 됨. 1자로 합침. git rebase 너 : 너 좀 git cherry-pick X Y Z : 현재 작업중인 곳이 갑임. X Y Z 순서로 HEAD 후속편으로 달라붙고, HEAD 브랜치가 master였다면 master는 Z를 따라 올라감. 현재 작업중인 HEAD가 체리알을 맘대로 pick해서 다 먹고 줄줄이 똥싸버리는 거임.
2020.04.17 -
[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