zoukankan      html  css  js  c++  java
  • Core Data 数据出现Fault

    I am mapping Json Data from Server using Restkit and I am Displaying those data by fetching from db. There is a refresh button in my view which performs the above operation again.

    Scenario: I have two tables Key & Profile which has one-one relationship. I am fetching data from DB using follwing code

    NSFetchRequest *fetchRequest = [Key fetchRequest];
    [fetchRequest setRelationshipKeyPathsForPrefetching:[NSArray arrayWithObject:@"Profile"]];
    [fetchRequest setIncludesSubentities:YES];
    NSArray *sortedObjects = [Key executeFetchRequest:fetchRequest]; 

    Above array returns all object in DB. but when i check that using breakpoint, i got some core data fault which was the reason for not showing all the data.

    //All data in sortedObjects are like this.

    <Key: 0x889f2f0> (entity: Key; id: 0x889e400 <x-coredata://981A476D-55AC-4CB4-BBD8-E0285E522412/Key/p1489> ; data: <fault>)

    Any idea

    This might be a misunderstanding about what a 'fault' is.

    As described in Apple's documentation:

    Faulting is a mechanism Core Data employs to reduce your application’s memory usage.

    and

    A fault is a placeholder object that represents a managed object that has not yet been fully realized, or a collection object that represents a relationship:

    So, if you see the word 'fault' in logs when you're working with Core Data, it doesn't mean that an error has occurred. What unexpected behaviour are you seeing in your app?



    You haven't actually described a problem. A Core Data fault isn't an error-- it's more like a page fault in a file system. It just means that the data hasn't been read yet. What you're describing is completely normal and expected. If you access any of the attributes of the returned objects, the fault will be automatically filled and you'll see the results. So if your Key entity has an attribute called name, you can still look up the value(s) for name and even log them if you want.

    You could force the faults to be filled by adding this before executing the fetch request:

    [fetchRequest setReturnsObjectsAsFaults:NO];

    It's not necessary though and, depending on what attributes you have and how many objects you fetch, could use a lot more memory than is really needed.

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    React源码 Suspense 和 ReactLazy
    React源码 ReactContext
    BZOJ 3456: 城市规划 与 多项式求逆算法介绍(多项式求逆, dp)
    LOJ #6436. 「PKUSC2018」神仙的游戏(字符串+NTT)
    LOJ #6433. 「PKUSC2018」最大前缀和(状压dp)
    LOJ #6432. 「PKUSC2018」真实排名(组合数)
    LOJ #2542. 「PKUWC 2018」随机游走(最值反演 + 树上期望dp + FMT)
    LOJ #2541. 「PKUWC 2018」猎人杀(容斥 , 期望dp , NTT优化)
    LOJ #2540. 「PKUWC 2018」随机算法(概率dp)
    LOJ #2538. 「PKUWC 2018」Slay the Spire (期望dp)
  • 原文地址:https://www.cnblogs.com/zsw-1993/p/4879977.html
Copyright © 2011-2022 走看看