【发布时间】:2016-08-05 19:41:14
【问题描述】:
我在不同的 ViewControllers 中有不同的领域对象,并且从我的 settingViewController 我删除了应用程序的所有数据(领域存储的对象)它工作正常但是当我回到那些视图控制器时我得到了这个异常:
Terminating app due to uncaught exception 'RLMException', reason: 'Object has been deleted or invalidated.'
*** First throw call stack:
(0x180c0adb0 0x18026ff80 0x100a13e7c 0x1001bd54c 0x1001be77c 0x1860c288c 0x1860c2c3c 0x185eb78e8 0x185d775b4 0x185eb6d34 0x192375f40 0x185ef1c94 0x192375ccc 0x1001b97ac 0x1001bbe4c 0x1860bf030 0x1860bf198 0x1860ae298 0x1860c3c64 0x185e548c4 0x185d641e4 0x1836f698c 0x1836f15c8 0x1836f1488 0x1836f0ab8 0x1836f0818 0x1836e9ddc 0x180bc0728 0x180bbe4cc 0x180bbe8fc 0x180ae8c50 0x1823d0088 0x185dd2088 0x100121cc8 0x1806868b8)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb)
我知道它的发生,因为系统(内核,iOS)不知道我已经删除了那些领域对象并且系统正在尝试使用不再存在的数据(如果我错了,请纠正我),任何人都可以指导我如何解决这个问题???
【问题讨论】:
-
在您仍在访问 Realm 文件时删除它会导致类似这样的坏事。我建议您在删除文件之前停止访问 Realm。
-
@jpsim 谢谢你的回复,你能详细说明一下怎么做吗?
-
要停止访问 Realm,您需要解除分配由该 Realm 中的数据支持的所有实例。这意味着
Realm、Object、Results、Lists、LinkingObjects,以及停止任何可能仍在监听更改的通知。您可能需要阅读 ARC 和 autoreleasepools 以了解有关如何执行此操作的更多信息:developer.apple.com/library/ios/documentation/Swift/Conceptual/…