首页 文章

访问coredata` faults`会使viewController中的所有coredata属性都为NIL

提问于
浏览
1

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

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

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

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

我不知道为什么会这样?有什么办法可以解决吗?打开控制中心后,是否需要再次设置所有变量?是否有任何州维持问题或什么?有没有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

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

    没有错误 .

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

  • 0

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

  • 0

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

  • 0

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

相关问题