[iOS/Swift] Realm - Migration
·
iOS/🔎 swift 정리하기
💡 Migration 컬럼 명을 변경하였기 때문에 일치하지 않는다는 런타임 오류가 발생한다. ✅ 스키마 버전 체크 func checkSchemaVersion() { do { let version = try schemaVersionAtURL(realm.configuration.fileURL!) print("schema version: \(version)") } catch { print(error) } } db 테이블 스키마에 대한 버전을 관리하기 위해 migration 작업을 해야한다. realm의 default schema 버전은 0 migration 작업은 appDelegate에서 작업해야 한다. func application(_ application: UIApplication, didFinishLau..
[iOS/Swift] Realm - 이미지 파일 저장하기
·
iOS/🔎 swift 정리하기
서버 통신 한 이미지 파일 저장하고 불러오기 서버 통신을 통해 받은 이미지 url을 데이터 베이스에 저장한 후 꺼내와서 이미지를 로드하면 오류가 발생한다. 데이터 베이스 내부에서 꺼내온 값을 글로벌로 접근하려고 하기 때문에 발생한 오류이다. DispatchQueue 외부에서 상수로 저장한 후 사용하면 오류가 나지 않는다. 이미지를 하나하나 불러올 때 마다 네트워크 통신을 하게 되는데, 이미지의 용량이 크거나 로드할 데이터가 많다면 이미지 로드가 오래 걸릴 수 있다. ❓ 어떻게 해결해야 할까? 이미지 구현을 셀 구성할 때 하지말고, 미리 UIImage 형식으로 변환 후 셀에 보여주는 것. 하지만 이 또한 데이터가 여러개라면 변환하는 데에 오랜 시간이 걸리고, 사용자가 보지 않고 넘겨버릴 이미지까지 모두 로..
[iOS/Swift] Realm - CRUD
·
iOS/🔎 swift 정리하기
💡 swift에서 Realm 사용해보기 ✅ Realm Model 만들기 @Persisted 앱을 종료하더라도 유지되어야 하는 데이터를 지정하기 위해 사용 ✅ PK 지정하기 @Persisted(primaryKey: true) var id = 0 PK값을 별도로 지정할 수도 있고, 자동으로 key값을 지정하도록 할 수 있다. 💡 CRUD import RealmSwift let realm = try! Realm() realm 파일에 접근하는 상수를 선언한다. realm 파일의 위치를 찾는 코드 도큐먼트 폴더 내 default.realm 🔎 Create let realm = try! Realm() let specificPerson = realm.object(ofType: Person.self, forPrimar..
[iOS/Swift] - Swift에서 값을 전달하는 방법
·
iOS/🔎 swift 정리하기
💡 Pass Data between View Controllers property notification delegate pattern closure 🔎 property 데이터를 넘길 뷰의 프로퍼티에 직접 값을 전달하는 방식이다. push나 present 방식의 화면 전환에서만 사용할 수 있다. ❗️ 전환된 화면에서 다시 돌아갈 때 값을 전달하고 싶다면 다시 돌아갈 뷰컨에 전달해야 하는데 잘 사용하지도 않으며 뷰컨 관계가 상호적으로 묶이게 되는 문제가 발생한다. 때문에 역방향으로 값을 전달하고 싶을 땐 다음 세가지 방법을 사용해보자 🔎 Notification A → B → C ⇒ C에서 변경한 데이터 A, B에 반영 post → signal ( signal name) “Name”이라는 signal을 ad..