Last active
December 10, 2017 23:47
-
-
Save takashi1975/5738e49dec354232c7292f94b6ea43b9 to your computer and use it in GitHub Desktop.
Swift4 Realm
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//https://stackoverflow.com/questions/39579025/auto-increment-id-in-realm-swift-3-0 | |
//プライマリキーとして次の値を取得 | |
public static func getNextId(_ object: Object) -> Int { | |
//インスタンスからクラスを取得 | |
let model = type(of: object) | |
//Realm | |
let realm = try! Realm() | |
//最大値を問い合わせ (nullなら1) | |
let value = (realm.objects(model).max(ofProperty: "id") as Int? ?? 0) + 1 | |
return value; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
static let schemaVersion: [UInt64] = [ | |
0, // new | |
1, // edit 1 ... | |
2, // edit 2 ... | |
//... | |
] | |
public static func configuration() { | |
let config = Realm.Configuration( | |
schemaVersion: schemaVersion.last!, | |
migrationBlock: { migration, oldSchemaVersion in | |
if (oldSchemaVersion < schemaVersion.last!) { | |
//追加・削除のみであれば、特に何もしなくていいみたい | |
} | |
}) | |
Realm.Configuration.defaultConfiguration = config | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//データを追加 | |
private static func add(_ object: Object) { | |
//Realmを取得 | |
let realm = try! Realm() | |
//書き込み(追加) | |
try! realm.write { | |
realm.add(object) | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* ログを期間で管理するイメージ | |
*/ | |
//管理側 | |
final class LogList: Object { | |
//ログ期間 | |
@objc dynamic var start: Date = Date() | |
@objc dynamic var last: Date = Date() | |
//1対多 | |
let logs = List<LogData>() | |
} | |
// Logデータ | |
final class LogData: privateRealmBaseObject { | |
//プライマリキー | |
@objc dynamic var id: Int = 0 | |
override static func primaryKey() -> String? { | |
return "id" | |
} | |
//Realm: 逆参照 (どう設定したらいいかはまだ調査中...) | |
let list = LinkingObjects(fromType: LogList.self, property: "logs") | |
//ログの内容 | |
@objc dynamic var log_date: Date = Date() | |
@objc dynamic var log_title: String = "" | |
//... etc | |
} | |
// ログを追加 (LogData 追加済み) | |
extension xxx { | |
//リストの追加 | |
public static func add(list: LogList) { | |
try! let realm = Realm() | |
try! realm.write { | |
//管理テーブル | |
if (true) { | |
//ログ取得開始 | |
list.start = new Date() | |
list.last = new Date() | |
} | |
//リストの追加 | |
realm.add(object) | |
} | |
} | |
//ログの追加 (ログは設定済み) | |
public static func add(list: LogList, log: LogData) { | |
try! let realm = Realm() | |
try! realm.write { | |
//管理テーブル | |
if (true) { | |
//最終取得日付更新 | |
list.last = new Date() | |
//項目追加 | |
list.logs.append(object) | |
} | |
//ログの追加 | |
realm.add(object) | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment