簡體   English   中英

核心數據錯誤

[英]Core Data Fault

我使用Restkit從服務器映射Json數據,我通過從db獲取來顯示這些數據。 我的視圖中有一個刷新按鈕,它再次執行上述操作。

場景:我有兩個表Key和Profile,它們有一對一的關系。 我使用以下代碼從DB獲取數據

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

上面的數組返回DB中的所有對象。 但是當我檢查使用斷點時,我得到了一些核心數據錯誤,這是沒有顯示所有數據的原因。

// sortedObjects中的所有數據都是這樣的。

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

任何想法

這可能是對“錯誤”是什么的誤解。

Apple的文檔中所述

故障是Core Data用來減少應用程序內存使用量的機制。

fault是一個占位符對象,表示尚未完全實現的托管對象,或者是表示關系的集合對象:

因此,如果您在使用Core Data時在日志中看到“fault”一詞,則並不意味着發生了錯誤。 您在應用中看到了哪些意外行為?

你還沒有真正描述過一個問題。 核心數據故障不是錯誤 - 它更像是文件系統中的頁面錯誤。 它只是意味着尚未讀取數據。 你所描述的是完全正常和預期的。 如果訪問返回對象的任何屬性,則會自動填充錯誤,您將看到結果。 所以,如果你的Key實體呼叫屬性name ,你仍然可以查找值(S)的name ,如果你想甚至記錄他們。

可以通過在執行獲取請求之前添加此錯誤來強制填充錯誤:

[fetchRequest setReturnsObjectsAsFaults:NO];

但這並不是必需的,根據您擁有的屬性和獲取的對象數量,可能會使用比實際需要更多的內存。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM