TIL/2021
-
210505 - TILTIL/2021 2021. 5. 6. 03:19
FileManager FileManager 다수의 데이터를 저장할 때는 CoreData를 이용한다. App sandbox App을 설치하면 만들어지고 앱과 관련된 모든 file은 여기에 저장된다. 4개의 Bundle, iCloud, System, Data Container가 존재한다. Bundel Container 읽기 전용 실행파일, 리소스가 저장된다. iColud Container 동기화 데이터 Data Container Documents Directory 사용자가 직접 생성한 데이터를 저장 Library Dir 사용자가 직접 생성하지 않았지만 영구적으로 저장할 데이터 Cache Dir cache 데이터가 들어간다. 저장공간이 부족하면 알아서 삭제된다. 백업에서 제외시켜야한다. tmp Dir 임시 d..
-
210502 - TILTIL/2021 2021. 5. 3. 01:42
UIWindow 프로젝트에 NavigationViewController를 직접 생성하고 화면을 추가하려는 작업을 하려다 UIWindow까지 오게 됐다. appDelegate에 추가시켜줄 때나 RootView를 바꿀 때 사용은 했지만 뭔지 정확하게 모르는 거 같아서 이번 기회에 공부했다. App의 user interface의 backdrop이며 View의 이벤트 처리를 담당하는 객체 ViewController와 함께 이벤트를 다루고 앱 작동의 기본적인 다른 일들을 수행한다. Window를 두 가지 상황에서만 사용하는데 App의 content를 나타내는 main window를 제공할 때 추가적인 content를 나타내는 additional window를 생성할 때 여기서 생각해볼 additional cont..
-
210430 - TILTIL/2021 2021. 5. 1. 03:50
TDD 프로젝트를 진행하는데 이 코드를 바꾸고 이게 잘 되는 건지 아닌지 검증해보고 잘 된 건지 아닌지 생각해보고 또 고치고 하면서 TDD가 정말 필요하겠구나! 하는 생각이 절실히 들었다. 그래서 이전에 간단하게만 만들어둔 Test를 일단 실행시켰는데 응 ?? 잘 됐었는데 갑자기 Could not find test host for PresentrTests 에러가 가서 검색을 해보았다. stackoverflow.com/questions/44452534/xcode-could-not-find-test-host Xcode - Could not find test host I am receiving an error message when I try to use Xcode 8's Convert Wizard. Afte..
-
210429 - TILTIL/2021 2021. 4. 30. 03:11
CoreData 계속 Coredata에 대해서 공부 중이다. 계속 정보를 가져올때 network에 요청을 보낼 수 없으니 꼭 필요한 부분이다. 오늘 공부한 내용은 entity들의 관계와 data를 가져올 때 즉 fetch 할 때 정렬하고 async로 실행하는 방법에 대해서 공부했다. Entity Hierarchy Class의 상속을 생각하면 된다. Abstract Entity는 Abstarct class와 같은 개념이다. Instance를 생성하지 못하게 된다. Paent Entity를 지정해주면 끝! 그럼 attribute가 상속된다. Entity Relationship Realtionships에서 작성하면 된다. 두개의 Entity를 연결해주는 역할을 한다. To - One Relationship 1..
-
210427 - TILTIL/2021 2021. 4. 28. 02:34
Notification.Name extension 추가하기 전에도 공부했지만 한 번 더 복습하는 차원에서 다시 공부했다. Notification을 보내는데 내가 생성한 이름의 notification을 보내야 할 때 추가하는 방법이다. Storyboard에 만들어둔 NavigationViewController, ViewController 코드로 접근하기 CoreData 앱에서 cell을 클릭하면 맞는 화면을 보여줘야하는데 일단 선택과 indexPath를 쉽게 하도록 tableView(_:didSelectRowAt:)에서 구현을 해야 한다. 그리고 storyboard로 가서 viewController에 storyboardID를 정해줘야 한다. vc를 가져와 속성에 값을 할당할 수도 있다. present 할 ..
-
210426 - TILTIL/2021 2021. 4. 28. 01:20
CoreData 서버에서 데이터를 가져오면 이 데이터를 CoreData에 저장해서 간단한 작업들은 다음에 네트워크 요청을 하지 않고 이 데이터를 이용하여 처리하기 위해서 CoreData 공부를 해야 했다. 전에는 어렵다고 느꼈는데 다시 공부해보니.... 쉽게 느껴졌다. CoreData 데이터를 저장하고 출력하는 기능을 쉽게 구현 가능! Persistent Cotainer: NSPersistentContainer 4가지 중요 객체 - CoreDataStack Persistent Store: NSPersistentStore 영구 저장소 Object Model: NSManagedObjectModel 데이터들의 관계, 어떤 데이터가 들어가는지 Persistent Store Coordinator: NSPesist..
-
210425 - TILTIL/2021 2021. 4. 26. 01:22
PropertyList xml로 만들어져 있다. OpenAS - sourceCode로 보면 xml로 보인다, Key와 Value를 한 쌍으로 new에서 PropertyList를 생성해 새로 추가할 수 도 있다. 하나의 Root에 data들을 추가를 시켜야 한다. 저장한 data는 Bundle에 추가된다. Bundle에 추가되는 data들은 읽기 전용이다. NSDictionary나 NSArray로 저장된 data를 읽어올 수 있다. FileManager로 File에 추가하고 불러올 때 decoder는 PropertyListDecoder()를 사용하면 된다. 저장할 때는 PropertyListEncoder()를 사용하면 된다. Codable을 채용한 형식으로도 encode, decode 할 있다. Class..
-
210422 - TILTIL/2021 2021. 4. 23. 03:19
CollectionView의 item이 하나만 선택되도록 하기 이전에 collectionView에서 발생한 문제를 해결하기 위해서 가장 필요한 부분이 collectionView(_:didSelectItemAt:) 에서 선택한 item 말고 나머지 item의 상태를 바꿀 수 있어야 했다. 그래서 해결을 한 방법은 이렇게 selectedItemIndex를 생성하고 for 반복문을 돌면서 index와 비교해서 같은 것은 선택된 것이고 아닌 것은 선택되지 않은 것으로 해서 상태를 바꿔주면 됐다. 이렇게 하니 collectionView(_:didDeselectItemAt:)를 사용할 필요가 없어졌다. 기억해야 할 점은 이 코드를 collectionView(_:cellForItemAt:)에도 추가시켜야 화면에 보이..