访问coredata` faults`会使viewController

时间:2017-01-27 17:24:38

标签: ios iphone swift core-data

我从coredata表 STUDENT 中获取数据,并在带有Array的tableview中显示所有学生姓名。选择任何一个学生姓名(点击tableViewCell )后,它会从另一个表中获取学生的完整详细信息并显示在下一个个人资料视图控制器中。

现在的问题是,在配置文件视图控制器中我打开iPhone的控制中心(打开蓝牙/ Wifi /音乐等),在我解除控制中心后,我的所有变量都变为零,即使我&#39 ; m弹出到上一个屏幕(所有学生姓名列表),显示空白表。

当我调试此问题时,我发现我的学生数组在pop viewcontroller期间变为Nil。只有当我在使用应用程序时打开控制中心托盘时才会出现此问题,否则它会维护所有数组和变量。

我不知道为什么它会在父视图控制器中生成数组Nil。我在配置文件视图控制器中访问控制中心,并在父视图控制器中重置我的数组。

我不知道为什么会这样吗?有什么办法可以解决吗?打开控制中心后,是否需要再次设置所有变量?是否有任何州维持问题或什么?是否存在与coredata相关的问题?

错误如下所示:

5 elements
      - 0 : <Student: 0x17468c670> (entity: Challenge; id: 0xd0000000665c0006 <x-coredata://C8F37C3F-3153-4EA5-9914-0CEBEB5731E4/Challenge/p6551> ; data: <fault>)
      - 1 : <Student: 0x17488b4f0> (entity: Challenge; id: 0xd000000066600006 <x-coredata://C8F37C3F-3153-4EA5-9914-0CEBEB5731E4/Challenge/p6552> ; data: <fault>)
      - 2 : <Student: 0x174887a80> (entity: Challenge; id: 0xd000000066640006 <x-coredata://C8F37C3F-3153-4EA5-9914-0CEBEB5731E4/Challenge/p6553> ; data: <fault>)
      - 3 : <Student: 0x17488b270> (entity: Challenge; id: 0xd000000066680006 <x-coredata://C8F37C3F-3153-4EA5-9914-0CEBEB5731E4/Challenge/p6554> ; data: <fault>)
      - 4 : <Student: 0x1746823f0> (entity: Challenge; id: 0xd0000000666c0006 <x-coredata://C8F37C3F-3153-4EA5-9914-0CEBEB5731E4/Challenge/p6555> ; data: <fault>)

这里data<fault>,Array包含5个对象但是当我尝试访问该对象属性时,它们是Nil。似乎coredata对象变得空白。

我在swift 3.0,Xcode 8中工作.iOS 10.2。请寻求帮助。

4 个答案:

答案 0 :(得分:0)

Fault是用于管理内存使用的coredata功能。

没有错误。

如果您访问Student.data属性,核心数据将获取请求,然后您将获得整个数据。

答案 1 :(得分:0)

你是否正在坚持班级或单身人士的NSManagedObjectContext财产?否则,支持实体的托管对象上下文将被取消分配,并且您的实体将无法将数据故障返回到内存中。控制中心可能会导致内存压力自动驱逐实体数据。

答案 2 :(得分:0)

我找到了一个解决方案,我将 coredata对象移动到类对象。现在它在类对象中自动维护数据,因为它在iOS中是默认行为。 感谢大家的建议。

答案 3 :(得分:0)

我处理创建单独的模型类。所以现在我只需要访问类对象,而不是coredata属性。这不是我正在寻找的确切解决方案,但也可能是解决方案。它工作得很好。 谢谢大家。!! :)