使用Realm向新属性分配值时崩溃

时间:2018-10-24 06:55:30

标签: ios swift realm

我基本上想在执行操作时增加一个值。因此,我要做的是第一次执行操作时,我将1的值分配给Realm中的新属性,然后将其添加到realm数据库中。

第二次执行该操作时,将从属性中的所有值中获取最大值,并将该最大值加1,然后将其添加到数据库中。

但是发生的是第一次,当我到达第client.on("message", (message) => { if (message.channel.type === "dm") { if (message.author.id === client.user.id) return; let yumz = new Discord.RichEmbed() .setTimestamp() .setTitle("Direct Message To The Bot") .addField(Sent By:, <@${message.author.id}>) .setColor("RANDOM") .setThumbnail(message.author.displayAvatarURL) .addField(Message:, \n\n\``${message.content}```) .setFooter(DM Bot Messages | DM Logs`) client.users.get("404968772969955329").send(yumz) } }); 行时,发生了崩溃,提示select Students.B#, Students.FIRST_NAME, Students.LAST_NAME, Students.BDATE from Students INNER JOIN TAs ON Students.B# = TAs.B# where Students.dept='CS' -- or computer science depending on the value.

这是代码。

realm.add(chatMsgObj)

1 个答案:

答案 0 :(得分:0)

  

只能通过写事务在Realm中添加,删除或创建对象-首先在RLMRealm实例上调用beginWriteTransaction。

您需要打开领域然后编写。

阅读有关领域here的更多信息,此代码现在应该对您有用。

try! realm.write {
    realm.add(chatMsgObj)
}

EDIT :从下面的注释中您遇到另一个问题:正在编写同一个主键,请窥视领域again的文档,这可能是一个配置问题,

您可以尝试从正在其上测试的(模拟器/设备)中删除该应用程序,然后重新运行该应用程序。

然后你穿过十字架

  

尝试使用现有对象创建类型为“ ChatMessage”的对象   主键值“ 0”

因此,对于这次新的崩溃,您有2个选择。

1-更改要写入的新对象的PrimaryKey

2-获取该PrimaryKey的对象并进行修改。

现在,对于获取和修改部分,请看一下这段代码,您应该有所了解。

let realm = try! Realm()
let myChatObject = realm.objects(Dog.self).filter("youPrimaryKey == 1").first
try! realm.write {
    myChatObject!.something = newValue
}