프알못의 realm 사용기
TRANSCRIPT
![Page 1: 프알못의 Realm 사용기](https://reader030.vdocuments.net/reader030/viewer/2022021422/58eceb0b1a28ab171a8b46b5/html5/thumbnails/1.jpg)
![Page 2: 프알못의 Realm 사용기](https://reader030.vdocuments.net/reader030/viewer/2022021422/58eceb0b1a28ab171a8b46b5/html5/thumbnails/2.jpg)
‣
‣
‣
![Page 3: 프알못의 Realm 사용기](https://reader030.vdocuments.net/reader030/viewer/2022021422/58eceb0b1a28ab171a8b46b5/html5/thumbnails/3.jpg)
• https://github.com/iOSDevKor/StartRealm
Realm Browser
• https://itunes.apple.com/kr/app/realm-browser/id1007457278?mt=12
![Page 4: 프알못의 Realm 사용기](https://reader030.vdocuments.net/reader030/viewer/2022021422/58eceb0b1a28ab171a8b46b5/html5/thumbnails/4.jpg)
![Page 5: 프알못의 Realm 사용기](https://reader030.vdocuments.net/reader030/viewer/2022021422/58eceb0b1a28ab171a8b46b5/html5/thumbnails/5.jpg)
16.02.03. 22:00
16.02.07. 18:3016.02.11. 14:00
![Page 6: 프알못의 Realm 사용기](https://reader030.vdocuments.net/reader030/viewer/2022021422/58eceb0b1a28ab171a8b46b5/html5/thumbnails/6.jpg)
class Travel: Object { dynamic var travelTitle: String? dynamic var travelCreationDate: Date = Date() let imageDatas: List<ImageData> = List<ImageData>() }
class ImageData: Object { dynamic var timeStamp: Int = 0 dynamic var country: String? dynamic var city: String? dynamic var image: Data? }
![Page 7: 프알못의 Realm 사용기](https://reader030.vdocuments.net/reader030/viewer/2022021422/58eceb0b1a28ab171a8b46b5/html5/thumbnails/7.jpg)
‣
‣
‣
‣
‣
‣
![Page 8: 프알못의 Realm 사용기](https://reader030.vdocuments.net/reader030/viewer/2022021422/58eceb0b1a28ab171a8b46b5/html5/thumbnails/8.jpg)
‣
‣
‣
‣
‣
![Page 9: 프알못의 Realm 사용기](https://reader030.vdocuments.net/reader030/viewer/2022021422/58eceb0b1a28ab171a8b46b5/html5/thumbnails/9.jpg)
‣
‣
‣
‣
‣
‣
‣
![Page 10: 프알못의 Realm 사용기](https://reader030.vdocuments.net/reader030/viewer/2022021422/58eceb0b1a28ab171a8b46b5/html5/thumbnails/10.jpg)
import RealmSwift
class Album: Object { dynamic var title: String = "" dynamic var createDate: Date = Date() let photos: List<Photo> = List<Photo>() }
class Photo: Object { dynamic var createDate: Date = Date() dynamic var image: Data = Data() }
![Page 11: 프알못의 Realm 사용기](https://reader030.vdocuments.net/reader030/viewer/2022021422/58eceb0b1a28ab171a8b46b5/html5/thumbnails/11.jpg)
let realm = try! Realm()
‣
‣
// configuration( ) let realm = try! Realm(configuration: realmConfig)
// Realm URL let realm = try! Realm(fileURL: realmURL)
![Page 12: 프알못의 Realm 사용기](https://reader030.vdocuments.net/reader030/viewer/2022021422/58eceb0b1a28ab171a8b46b5/html5/thumbnails/12.jpg)
let realm = try! Realm() ( )
do { let realm = try Realm() } catch { print(“\(error)") // handle error } ( )
![Page 13: 프알못의 Realm 사용기](https://reader030.vdocuments.net/reader030/viewer/2022021422/58eceb0b1a28ab171a8b46b5/html5/thumbnails/13.jpg)
try! realm.write { // Do something }
‣
‣
![Page 14: 프알못의 Realm 사용기](https://reader030.vdocuments.net/reader030/viewer/2022021422/58eceb0b1a28ab171a8b46b5/html5/thumbnails/14.jpg)
try! Realm.write { } ( )
do { try realm.write { realm.add(object) realm.delete(object) } } catch { print(“\(error)") // handle error } ( )
![Page 15: 프알못의 Realm 사용기](https://reader030.vdocuments.net/reader030/viewer/2022021422/58eceb0b1a28ab171a8b46b5/html5/thumbnails/15.jpg)
class { var token: NotificationToken!
token = albums.addNotificationBlock({(change) in // Do something
self.UIUpdate() }) }
![Page 16: 프알못의 Realm 사용기](https://reader030.vdocuments.net/reader030/viewer/2022021422/58eceb0b1a28ab171a8b46b5/html5/thumbnails/16.jpg)
‣
‣
Realm.Configuration( // schemaVersion 0 , .
schemaVersion: 3, // schemaVerion , schema . migrationBlock: { { migration, oldSchemaVersion in if oldSchemaVersion < 1 { } if oldSchemaVersion < 2 { }
})
![Page 17: 프알못의 Realm 사용기](https://reader030.vdocuments.net/reader030/viewer/2022021422/58eceb0b1a28ab171a8b46b5/html5/thumbnails/17.jpg)
‣
‣
‣
‣
‣
![Page 18: 프알못의 Realm 사용기](https://reader030.vdocuments.net/reader030/viewer/2022021422/58eceb0b1a28ab171a8b46b5/html5/thumbnails/18.jpg)
// schemaVersion0 class Album: Object { dynamic var title: String = "" dynamic var createDate: Date = Date() let photos: List<Photos> = List<Photos>() }
// schemaVersion1 class Album: Object { dynamic var title: String = "" dynamic var createDate: Date = Date() // property dynamic var uuid: String = UUID().uuidString let photos: List<Photos> = List<Photos>() }
![Page 19: 프알못의 Realm 사용기](https://reader030.vdocuments.net/reader030/viewer/2022021422/58eceb0b1a28ab171a8b46b5/html5/thumbnails/19.jpg)
class Album: Object { dynamic var title: String = "" dynamic var createDate: Date = Date() dynamic var uuid: String = UUID().uuidString let photos: List<Photos> = List<Photos>() override class func primaryKey() -> String? { return "uuid" } }
‣
‣
![Page 20: 프알못의 Realm 사용기](https://reader030.vdocuments.net/reader030/viewer/2022021422/58eceb0b1a28ab171a8b46b5/html5/thumbnails/20.jpg)
Device
‣ DB
shift+command+2 > App container >
Simulator
‣ /
Realm.Configuration.defaultConfiguration.fileURL
![Page 21: 프알못의 Realm 사용기](https://reader030.vdocuments.net/reader030/viewer/2022021422/58eceb0b1a28ab171a8b46b5/html5/thumbnails/21.jpg)
![Page 23: 프알못의 Realm 사용기](https://reader030.vdocuments.net/reader030/viewer/2022021422/58eceb0b1a28ab171a8b46b5/html5/thumbnails/23.jpg)
![Page 25: 프알못의 Realm 사용기](https://reader030.vdocuments.net/reader030/viewer/2022021422/58eceb0b1a28ab171a8b46b5/html5/thumbnails/25.jpg)