背景信息:
我有一个访问用户电子邮件帐户并提取帐户数据的应用程序:电子邮件,文件夹等。此过程包括几个步骤,最后一步是将新获取的信息保存或更新到核心数据。从开始到结束的整个过程可能需要几秒钟。
以下是问题:
具体来说,我得到的错误如下:
CoreData: annotation: logically false fetch request <NSFetchRequest: 0x13ce1430> (entity: Thread; predicate: (threadId == 1457719230395529203 AND folder == <Folder: 0xc1994c0> (entity: Folder; id: 0xc2ccb20 <x-coredata://A0837E88-30EB-46E8-A9BC-D6699EC7F160/Folder/p10> ; data: <fault>)); sortDescriptors: ((null)); type: NSManagedObjectResultType; ) short circuits.
崩溃发生在核心数据试图获取不再存在的对象的行上。
对核心数据不熟悉,我想知道是否有处理这种情况的一般策略。
答案 0 :(得分:0)
您可以在数据模型上分离这种逻辑工作,以便在使用队列上的操作启动下一个主要操作之前完成每个主要操作。
在这种特定情况下,听起来似乎没有正确处理当前请求的取消。取消活动后,您应该能够停止待处理的操作。您可能需要添加一个标志,并在每次异步回调之后和保存修改之前检查活动是否被取消。