我很好奇,如果我打电话realm.create,它会自动更新realm object from the realm results吗?
// Assuming a "Book" with a primary key of `1` already exists.
try! realm.write {
realm.create(Book.self, value: ["id": 1, "price": 9000.0], update: true)
// the book's `title` property will remain unchanged.
}
Run Code Online (Sandbox Code Playgroud)
目前看起来我需要再次从领域读取以获取最新的对象.如果我错了,请纠正我.
谢谢
我正在使用RealmSwift我的项目.但是,我不确定如何解决以下问题:
RMLException:试图修改写入事务以外的对象-调用beginWriteTransaction上的RLMRealm实例第一
抛出.
任何人都有任何线索?
import RealmSwift
func createOrUpdateMachineInRealm(machine: Machine){
let priority = DISPATCH_QUEUE_PRIORITY_DEFAULT
dispatch_async(dispatch_get_global_queue(priority, 0)) {
// do some task
let realm = Realm()
realm.beginWrite()
realm.write{
realm.add(machine, update: true)
}
realm.commitWrite()
dispatch_async(dispatch_get_main_queue()) {
// update some UI
actionDelegate?.operationCompleted(true)
}
}
}
Run Code Online (Sandbox Code Playgroud)
解决方案:我也传入机器的参数并将它们分配给realm.write()中的机器
func createOrUpdateMachineInRealm(machine: Machine, name: String){
let priority = DISPATCH_QUEUE_PRIORITY_DEFAULT
dispatch_async(dispatch_get_global_queue(priority, 0)) {
// do some task
let realm = Realm()
realm.write{
machine.name = name
realm.add(machine, update: true)
}
}
}
Run Code Online (Sandbox Code Playgroud) 期间RealmSwift migration,我想从中迁移dynamic var customObject: CustomObject到let customObjectList = List<CustomObject>().CustomObject是的类型Object
这是迁移中的一大块代码
let newList = List<CustomObject>()
if oldObject!["customObject"] != nil {
print(oldObject!["customObject"])
var obj = oldObject!["customObject"]
var result: CustomObject = obj as! CustomObject //Crash
farList.append(result)
}
newObject!["customObjectList"] = newList
Run Code Online (Sandbox Code Playgroud)
无法将'RealmSwift.DynamicObject'(0x1015c82d0)类型的值转换为'AppName.CustomObject'(0x1006e5550).
我如何实现我想要的?目前我能想到的是创建一个CustomObject并手动为其分配值.
编辑1
我想将一个primaryKey添加到CustomObject.我一直收到重复的主键错误,我很确定分配的密钥是唯一的.
致命错误:'试试!' 表达式意外地引发了错误:Error Domain = io.realm Code = 0"主键属性'resultKey'在迁移后具有重复值."
migration.deleteData(CustomObject.className())
if oldObject!["customObject"] != nil {
let oldSubFar = oldObject!["customObject"] as! MigrationObject
var newFarDict = oldSubFar.dictionaryWithValuesForKeys(["firstName","secondName"])
newFarDict["resultKey"] = NSUUID().UUIDString + "v1"
let newSubFar …Run Code Online (Sandbox Code Playgroud)