Realm์ ์ฌ์ฉํด์ ์ฑ์ ๋ง๋ค๋ค ๋ณด๋ฉด
ํ๋ก์ ํธ ์งํ ์ค์ ์๋ก์ด ํ๋กํผํฐ ๊ฐ์ ์ถ๊ฐ, ์ญ์ , ์ ๋ฐ์ดํธ ํ๊ฑฐ๋
ํ๋ผ์ด๋จธ๋ฆฌํค๋ฅผ ๋ณ๊ฒฝํด์ผ ํ๋ ์๊ฐ์ด ์์ ์ ์๋ค.
ํนํ ์ฑ์ ์ด๋ฏธ ๋ฐฐํฌํ ์ํ์์ ๊ผญ ํ์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์กฐ ๋ณ๊ฒฝ์ด ์ผ์ด๋์ผ ํ๋ค๋ฉด ์๋ ๊ธ์ ์ฐธ๊ณ ํด์ Configuration ์ ํด์ฃผ์ด์ผ ํ๋ค.
primaryKey์ ๋ณ๊ฒฝ์ด ์ผ์ด๋ฌ๋ค๋ฉด ์๋์ ๊ฐ์ด ์์ ํ๋ฉด ๋๋ค.
let configuration = Realm.Configuration(schemaVersion: 4) { migration, oldSchemaVersion in
migration.enumerateObjects(ofType: Quote.className()) { oldObject, newObject in
newObject!["ํ์ฌ ํ๋ผ์ด๋จธ๋ฆฌ ํค๋ก ์ฌ์ฉํ๋ ๋ณ์ ๋ช
"] = "์ด์ ์ ํ๋ผ์ด๋จธ๋ฆฌ ํค๋ก ์ฌ์ฉํ ๋ณ์ ๋ช
"
}
}
Realm.Configuration.defaultConfiguration = configuration
๊ทธ๋ฐ๋ฐ ๋ง์ฝ์ primaryKey๊ฐ ์์๊ณ ์๋กญ๊ฒ ์ถ๊ฐํด ์ฃผ๋ ๊ฒฝ์ฐ
/// ํ๋ผ์ด๋จธ๋ฆฌ ํค
@objc dynamic var _id: ObjectId = ObjectId.generate()
override class func primaryKey() -> String? {
return "_id"
}
์๋ก์ด primaryKey๊ฐ์ด ๋ ํ๋กํผํฐ๋ฅผ Object ํด๋์ค์ ์ ์ธํด ์ค
๊ทธ ํ์ primaryKey()๋ฅผ ์ค๋ฒ๋ผ์ด๋ ํด์ค
let configuration = Realm.Configuration(schemaVersion: 5) { migration, oldSchemaVersion in
migration.enumerateObjects(ofType: Quote.className()) { oldObject, newObject in
newObject!["_id"] = ObjectId.generate()
}
}
Realm.Configuration.defaultConfiguration = configuration
์๋ก ์์ฑํ ํ๋กํผํฐ์ PrimaryKey ๊ฐ์ผ๋ก ์ฌ์ฉํ ๊ฐ์ ๋ฃ์ด์ค๋ค.
์ด๋ ๊ฒ ํ๋ฉด ์ด์ ์ ์ฌ์ฉํ id๋ฅผ ๋ฒ๋ฆฌ๊ฒ ๋๋ ๊ฒ์ธ๋ฐ, ์ด์ id๋ primaryKey๋ก ์ฐ์ด์ง ์์ ์ ๋๋ก ๊ด๋ฆฌ๋๊ณ ์์ง ์์์
์๋ก์ด ํ๋กํผํฐ๋ฅผ ์์ฑํด ๋ง๋ค์ด ์ฃผ์๋ค.
์ด๋ ์กฐ์ฌํ ๊ฒ์ ๊ฐ์ฒด ํํฐ๋ง์ ์คํธ๋ง ๊ฐ์ผ๋ก ์กฐ๊ฑด๋ฌธ์ ์ ์ด์ฃผ๊ธฐ ๋๋ฌธ์ ๊ด๋ จ๋ ๋ก์ง์์ ํด๋น ๊ฐ์ ์ฐพ์ ์ง์ ๋ณ๊ฒฝํด ์ฃผ์ด์ผ ํ๋ค.
์ฐธ๊ณ ์ฌ์ดํธ ๋ฐ ๋์
https://stackoverflow.com/questions/32747890/migrate-primary-key-in-realm
'๐ iOS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Xcode/iOS] Simulator์์ UIViewController ๊ฝ ์ฐจ๊ฒ ์๋์ค๋ ๊ฒฝ์ฐ (0) | 2023.05.12 |
---|---|
[iOS/Swift] Configuration ๋ณ๋ก Firebase plist ํ์ผ ์ค์ (0) | 2023.04.26 |
[Xcode/Swift] Multiple Target (0) | 2023.04.26 |
[Xcode/Swift] User-Defined Build Settings (0) | 2023.04.26 |
[Xcode/Swift] Configuration ๊ด๋ฆฌํ๊ธฐ (0) | 2023.04.26 |
๋๊ธ