Realm 2.1.0 Swift3.0 앱 마이그레이션 지원
최근에는 IOT 인공지능인식계와 IOS와 연결될 수 있는 기술의 지견을 공부하고 있습니다.
이번에는 Realm의 Realm 공식 사이트 2.1.0
마이그레이션의 대응을 확인한 결과, 대응이 매우 간단했기 때문에 정보 공유하겠습니다.
마이그레이션이란?
마이그레이션, 이전, 이주, 이동, 환승 등의 의미를 가진 영어 단어입니다.
IOS에서는 주로, 앱의 버전 업에 수반해, 유저가 앱내에 보존하고 있는 정보를 보관 유지한 채로, 버젼 업하는 대응입니다. (다운 그레이드도 있다고 생각합니다만, 이번은 버전 업입니다.)
샘플 코드 설명
샘플 코드는 여기입니다.
htps : // 기주 b. 코 m / Daisuke Nagata / Rea lm mp ぇ
AppDelegate.swift의 didFinishLaunchingWithOptions 메서드 내에서 마이그레이션 가능 코드를 작성합니다.
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
let config = Realm.Configuration(
// 新しいスキーマバージョンを設定します。 これは以前に使用されたものよりも大きくなければなりません
// version(以前にスキーマバージョンを設定していない場合、バージョンは0です)。
schemaVersion: 2,
//スキーマのバージョンが上記のものよりも低い/を開くときに自動的に呼び出されるブロックを設定する
migrationBlock: { migration, oldSchemaVersion in
//まだ何も移行していないので、oldSchemaVersion == 0
if (oldSchemaVersion < 1) {
// Realmは新しいプロパティと削除されたプロパティを自動的に検出します
//そして自動的にディスク上のスキーマを更新する
}})
// Tell Realm to use this new configuration object for the default Realm
Realm.Configuration.defaultConfiguration = config
//デフォルトのレルムに対してこの新しい設定オブジェクトを使用するようにRealmに指示します
let realm = try! Realm()
print(realm, "Realm")
print(config,"Realm Version")
return true
}
구현 이유는 앱이 처음에 호출되는 방법이기 때문입니다. 그 중 schemaVersion을 2로 설정하고 있습니다. 콘솔에서 출력 결과를 확인할 수 있습니다.
realmDataSet 클래스에 속성을 추가하고 schemaVersion을 3으로 올리면 데이터베이스의 내용은 유지된 채로 새로운 속성도 추가할 수 있습니다.
이번 정보는 업데이트하는 내용입니다.
개발 도중 앱에서 데이터를 지울 수 있다면 앱을 제거하면 schemaVersion이 0으로 재설정됩니다. (데이터도 지워집니다.)
마이그레이션으로 수행
데이터베이스의 속성 이름을 변경, 추가 또는 삭제하는 것을 주로 수행합니다.
샘플 코드의 데이터베이스 속성은 여기입니다.
class realmDataSet: Object {
dynamic var now = NSDate()
dynamic var ID = String()
dynamic var Message = String()
}
일반적으로 마이그레이션을 지원하지 않고 속성을 늘리면 샘플 앱이 충돌합니다.
데이터베이스를 사용하고 있으면 공통으로 일어나는 이벤트입니다.
class realmDataSet: Object {
dynamic var now = NSDate()
dynamic var ID = String()
dynamic var Message = String()
dynamic var Message2 = String()
}
schemaVersion2로 할 경우 샘플 앱은 AppDelegate.swift의
Realm.Configuration.defaultConfiguration = config
print(config)
print(config)로 콘솔에 출력 결과를 내고 있습니다.
출력 결과
콘솔 출력을 확인하면 schemaVersion이 2로 출력되는지 확인할 수 있습니다.
그 외, 상세한 작업은 Realm 공식 사이트 2.1.0 에 예제가 있으므로, 참조 바랍니다.
Realm에 데이터를 유지하면서 버전 업 검증
버전 업 전 schemaVersion은 1
콘솔 출력 결과
RealmSwift.Realm Realm
Realm.Configuration {
fileURL = file:///var/mobile/Containers/Data/Application/5067B010-C035-4502-B6FF-9364E6D1BF0B/Documents/default.realm;
inMemoryIdentifier = (null);
encryptionKey = (null);
readOnly = 0;
schemaVersion = 1;
migrationBlock = <__NSMallocBlock__: 0x17004f0c0>;
deleteRealmIfMigrationNeeded = 0;
dynamic = 0;
customSchema = (null);} Realm Version
데이터베이스에 값을 저장한 이미지
버전 업 후 schemaVersion은 2 (속성을 늘리거나 변경도 가능)
방금 입력한 데이터를 보관할 수 있었습니다.
콘솔 출력 결과
Realm.Configuration {
fileURL = file:///var/mobile/Containers/Data/Application/12CFBEB8-E651-495B-AE43-4EB0067EEB05/Documents/default.realm;
inMemoryIdentifier = (null);
encryptionKey = (null);
readOnly = 0;
schemaVersion = 2;
migrationBlock = <__NSMallocBlock__: 0x174053890>;
deleteRealmIfMigrationNeeded = 0;
dynamic = 0;
customSchema = (null);} Realm Version
schemaVersion2로 설정, 데이터베이스의 속성을 늘려 출력한 이미지
(이주를 지원하지 않으면 데이터베이스를 사용하는 앱은 속성을 늘려 출력하면 충돌합니다.)
요약
Realm 데이터베이스를 사용하여 데이터를 유지하면서 버전을 업그레이드하는 방법을 설명했습니다.
Realm의 마이그레이션 대응은 매우 간단하고 간단한 작업이라고 생각합니다. 효율이 올라간다고 생각합니다.
다음 번에는 Realm mobile Pratform을 구현한 애플리케이션을 만들고 Realm mobile Pratform을 공유하고 싶습니다.
소중한 시간을 내어 읽어 주셔서 감사합니다. 😀
Reference
이 문제에 관하여(Realm 2.1.0 Swift3.0 앱 마이그레이션 지원), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/daisukenagata/items/bfbbbad90d2cfcf06464
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
샘플 코드는 여기입니다.
htps : // 기주 b. 코 m / Daisuke Nagata / Rea lm mp ぇ
AppDelegate.swift의 didFinishLaunchingWithOptions 메서드 내에서 마이그레이션 가능 코드를 작성합니다.
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
let config = Realm.Configuration(
// 新しいスキーマバージョンを設定します。 これは以前に使用されたものよりも大きくなければなりません
// version(以前にスキーマバージョンを設定していない場合、バージョンは0です)。
schemaVersion: 2,
//スキーマのバージョンが上記のものよりも低い/を開くときに自動的に呼び出されるブロックを設定する
migrationBlock: { migration, oldSchemaVersion in
//まだ何も移行していないので、oldSchemaVersion == 0
if (oldSchemaVersion < 1) {
// Realmは新しいプロパティと削除されたプロパティを自動的に検出します
//そして自動的にディスク上のスキーマを更新する
}})
// Tell Realm to use this new configuration object for the default Realm
Realm.Configuration.defaultConfiguration = config
//デフォルトのレルムに対してこの新しい設定オブジェクトを使用するようにRealmに指示します
let realm = try! Realm()
print(realm, "Realm")
print(config,"Realm Version")
return true
}
구현 이유는 앱이 처음에 호출되는 방법이기 때문입니다. 그 중 schemaVersion을 2로 설정하고 있습니다. 콘솔에서 출력 결과를 확인할 수 있습니다.
realmDataSet 클래스에 속성을 추가하고 schemaVersion을 3으로 올리면 데이터베이스의 내용은 유지된 채로 새로운 속성도 추가할 수 있습니다.
이번 정보는 업데이트하는 내용입니다.
개발 도중 앱에서 데이터를 지울 수 있다면 앱을 제거하면 schemaVersion이 0으로 재설정됩니다. (데이터도 지워집니다.)
마이그레이션으로 수행
데이터베이스의 속성 이름을 변경, 추가 또는 삭제하는 것을 주로 수행합니다.
샘플 코드의 데이터베이스 속성은 여기입니다.
class realmDataSet: Object {
dynamic var now = NSDate()
dynamic var ID = String()
dynamic var Message = String()
}
일반적으로 마이그레이션을 지원하지 않고 속성을 늘리면 샘플 앱이 충돌합니다.
데이터베이스를 사용하고 있으면 공통으로 일어나는 이벤트입니다.
class realmDataSet: Object {
dynamic var now = NSDate()
dynamic var ID = String()
dynamic var Message = String()
dynamic var Message2 = String()
}
schemaVersion2로 할 경우 샘플 앱은 AppDelegate.swift의
Realm.Configuration.defaultConfiguration = config
print(config)
print(config)로 콘솔에 출력 결과를 내고 있습니다.
출력 결과
콘솔 출력을 확인하면 schemaVersion이 2로 출력되는지 확인할 수 있습니다.
그 외, 상세한 작업은 Realm 공식 사이트 2.1.0 에 예제가 있으므로, 참조 바랍니다.
Realm에 데이터를 유지하면서 버전 업 검증
버전 업 전 schemaVersion은 1
콘솔 출력 결과
RealmSwift.Realm Realm
Realm.Configuration {
fileURL = file:///var/mobile/Containers/Data/Application/5067B010-C035-4502-B6FF-9364E6D1BF0B/Documents/default.realm;
inMemoryIdentifier = (null);
encryptionKey = (null);
readOnly = 0;
schemaVersion = 1;
migrationBlock = <__NSMallocBlock__: 0x17004f0c0>;
deleteRealmIfMigrationNeeded = 0;
dynamic = 0;
customSchema = (null);} Realm Version
데이터베이스에 값을 저장한 이미지
버전 업 후 schemaVersion은 2 (속성을 늘리거나 변경도 가능)
방금 입력한 데이터를 보관할 수 있었습니다.
콘솔 출력 결과
Realm.Configuration {
fileURL = file:///var/mobile/Containers/Data/Application/12CFBEB8-E651-495B-AE43-4EB0067EEB05/Documents/default.realm;
inMemoryIdentifier = (null);
encryptionKey = (null);
readOnly = 0;
schemaVersion = 2;
migrationBlock = <__NSMallocBlock__: 0x174053890>;
deleteRealmIfMigrationNeeded = 0;
dynamic = 0;
customSchema = (null);} Realm Version
schemaVersion2로 설정, 데이터베이스의 속성을 늘려 출력한 이미지
(이주를 지원하지 않으면 데이터베이스를 사용하는 앱은 속성을 늘려 출력하면 충돌합니다.)
요약
Realm 데이터베이스를 사용하여 데이터를 유지하면서 버전을 업그레이드하는 방법을 설명했습니다.
Realm의 마이그레이션 대응은 매우 간단하고 간단한 작업이라고 생각합니다. 효율이 올라간다고 생각합니다.
다음 번에는 Realm mobile Pratform을 구현한 애플리케이션을 만들고 Realm mobile Pratform을 공유하고 싶습니다.
소중한 시간을 내어 읽어 주셔서 감사합니다. 😀
Reference
이 문제에 관하여(Realm 2.1.0 Swift3.0 앱 마이그레이션 지원), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/daisukenagata/items/bfbbbad90d2cfcf06464
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
class realmDataSet: Object {
dynamic var now = NSDate()
dynamic var ID = String()
dynamic var Message = String()
}
class realmDataSet: Object {
dynamic var now = NSDate()
dynamic var ID = String()
dynamic var Message = String()
dynamic var Message2 = String()
}
Realm.Configuration.defaultConfiguration = config
print(config)
버전 업 전 schemaVersion은 1
콘솔 출력 결과
RealmSwift.Realm Realm
Realm.Configuration {
fileURL = file:///var/mobile/Containers/Data/Application/5067B010-C035-4502-B6FF-9364E6D1BF0B/Documents/default.realm;
inMemoryIdentifier = (null);
encryptionKey = (null);
readOnly = 0;
schemaVersion = 1;
migrationBlock = <__NSMallocBlock__: 0x17004f0c0>;
deleteRealmIfMigrationNeeded = 0;
dynamic = 0;
customSchema = (null);} Realm Version
데이터베이스에 값을 저장한 이미지
버전 업 후 schemaVersion은 2 (속성을 늘리거나 변경도 가능)
방금 입력한 데이터를 보관할 수 있었습니다.
콘솔 출력 결과
Realm.Configuration {
fileURL = file:///var/mobile/Containers/Data/Application/12CFBEB8-E651-495B-AE43-4EB0067EEB05/Documents/default.realm;
inMemoryIdentifier = (null);
encryptionKey = (null);
readOnly = 0;
schemaVersion = 2;
migrationBlock = <__NSMallocBlock__: 0x174053890>;
deleteRealmIfMigrationNeeded = 0;
dynamic = 0;
customSchema = (null);} Realm Version
schemaVersion2로 설정, 데이터베이스의 속성을 늘려 출력한 이미지
(이주를 지원하지 않으면 데이터베이스를 사용하는 앱은 속성을 늘려 출력하면 충돌합니다.)
요약
Realm 데이터베이스를 사용하여 데이터를 유지하면서 버전을 업그레이드하는 방법을 설명했습니다.
Realm의 마이그레이션 대응은 매우 간단하고 간단한 작업이라고 생각합니다. 효율이 올라간다고 생각합니다.
다음 번에는 Realm mobile Pratform을 구현한 애플리케이션을 만들고 Realm mobile Pratform을 공유하고 싶습니다.
소중한 시간을 내어 읽어 주셔서 감사합니다. 😀
Reference
이 문제에 관하여(Realm 2.1.0 Swift3.0 앱 마이그레이션 지원), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/daisukenagata/items/bfbbbad90d2cfcf06464
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Realm 2.1.0 Swift3.0 앱 마이그레이션 지원), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/daisukenagata/items/bfbbbad90d2cfcf06464텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)