【问题标题】:Does deleting an old object, and adding a new object with the same primary keys cause an issue?删除旧对象并添加具有相同主键的新对象会导致问题吗?
【发布时间】:2016-11-25 14:04:51
【问题描述】:

我想知道是否有人遇到过像我这样的问题。我目前正在编写一种方法来解析我需要保留在我的 Realm 数据库中的信息数组。

RLMRealm *defaultRealm = [RLMRealm defaultRealm];
[defaultRealm beginWriteTransaction];
[defaultRealm deleteObject:myOldObjectWithPrimaryKey1];
[defaultRealm commitWriteTransaction];

...do some work....

[defaultRealm beginWriteTransaction];
[defaultRealm addOrUpdateObject:myNewObjectWithPrimaryKey1];
[defaultRealm commitWriteTransaction];

这在 Realm 中是合法的吗?我注意到我的值没有被正确更新/存储。

谢谢!

【问题讨论】:

  • 虽然它不会“引起问题”,但对象本身将变得无效,您必须重新查询“具有相同主键的新对象”。
  • 您是否看到任何错误消息?您提供的代码示例对我来说似乎很好。
  • @EpicPandaForce 我知道 myOldObjectWithPrimaryKey1 将变得无效,但我不再尝试访问该对象。 myNewObjectWithPrimaryKey1 是一个全新分配的对象……这两个对象之间唯一相同的是它们共享相同的主键值。在这种情况下,它们都共享主键值 1。
  • @Dmitry 不,我没有看到任何错误...我只是想弄清楚为什么有时数据库不会保留数据。虽然它似乎与我调用 writeCopyToPath 来压缩数据库有关。

标签: ios objective-c realm


【解决方案1】:

问题不在于具有相同的主键值。当我调用 writeCopyToPath 来压缩数据库大小时,问题再次出现,出现问题并导致数据库恢复到旧状态,因此数据丢失。

【讨论】:

  • 您能否分享一个重现此问题的示例 Xcode 项目?
  • 听起来您正在执行的文件系统操作可能很繁琐。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-05
  • 2020-02-22
  • 1970-01-01
  • 2021-10-26
  • 2018-05-22
  • 1970-01-01
  • 2015-12-16
相关资源
最近更新 更多