我真的不明白“returnsObjectsAsFaults”的用法。 文档说:
一个布尔值,指示使用接收器获取的对象是否是错误。
如果使用接收器获取的对象是故障,则为YES,否则为NO。默认值为YES。如果结果类型(请参阅resultType)是NSManagedObjectIDResultType,则不使用此设置,因为对象ID没有属性值。如果您知道需要从返回的对象访问属性值,则可以将returnsObjectsAsFaults设置为NO以获得性能优势。
默认情况下,执行fetch返回时,对象AsFaults为YES; Core Data获取匹配记录的对象数据,使用信息填充行缓存,并将托管对象作为错误返回。这些故障是受管对象,但它们的所有属性数据都驻留在行高速缓存中,直到触发故障为止。发生故障时,Core Data会从行缓存中检索数据。尽管此操作的开销很小,但对于大型数据集,它可能变得非常重要。如果需要从返回的对象访问属性值(例如,如果迭代所有对象以计算特定属性的平均值),则将returnsObjectsAsFaults设置为NO以避免额外开销会更有效。
将托管对象作为错误返回是什么意思?
因此,如果将其设置为true,那么对象将存储在缓存中并且无法访问?
另一方面,假将使其可访问?
请帮助我清楚这一点,因为我对文档的解释感到非常困惑。
let request = NSFetchRequest(entityName: "BlogItems")
request.returnsObjectsAsFaults = false
答案 0 :(得分:9)
我今天偶然发现了这个问题。
我们有一些iPad和iPhone应用程序,但今天,重建它们返回正确数量的记录,但每个都是空的。
事业的原因是荒谬的旗帜:
request.returnsObjectsAsFaults = false
让我烦恼的是:
includesPropertyValues
"为TRUE,这足以,errrm,包括属性值。Apple: Fetching objects from CoreData
我非常厌恶Xcode,每个版本似乎都会让你更多的理由讨厌它。在撰写本文时,App Store对Xcode的平均评分仅为2星,Apple似乎忽略了用户对其有多糟糕的抱怨。
无论如何,咆哮。 Here's a link到StackOverflow文章,该文章描述了returnsObjectsAsFaults
和includesPropertyValues
之间的差异以及second link,为您提供了如何在iOS编程中生存的详细信息。
答案 1 :(得分:1)