2014-10-08 73 views
0

,當我從獲取核心數據記錄,它返回空值...我不知道是什麼問題...無法從核心數據獲取的數據文件

當我NSLog檢查顯示像這樣:

"<Ad: 0x979fb30> (entity: Ad; id: 0x9799470 <x-coredata://B3AA111F-8307-4A16-B898- 
403A804DFDFB/Ad/p22> ; data: <fault>)", 
"<Ad: 0x979fd70> (entity: Ad; id: 0x9799480 <x-coredata://B3AA111F-8307-4A16-B898- 
403A804DFDFB/Ad/p23> ; data: <fault>) 

這是我的代碼。 我將所有核心數據函數都返回到名爲dbmanager的單獨類中。

- (void)viewDidLoad 
{ 
DBManager *manager=[[DBManager alloc]init]; 
self.fetchedRecordsArray = [manager fetchAllAds]; 
[self.shoppingtbl reloadData]; 
} 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 

return 1; 
} 
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
return [self.fetchedRecordsArray count]; 

} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath 
*)indexPath 
{ 

static NSString *CellIdentifier = @"ShoppingCart"; 
ShoppingCart *cell = (ShoppingCart*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier 
forIndexPath:indexPath]; 
cell.backgroundColor=[UIColor clearColor]; 
ad=[self.fetchedRecordsArray objectAtIndex:indexPath.row] 
cell.addesc.text = ad.data; 
cell.adId.text=[NSString stringWithFormat:@"%lu", (long)[ad.adId integerValue]]; 
cell.adstatus.text=[NSString stringWithFormat:@"%@",ad.state]; 
return cell; 
} 

實體名稱爲Ad。它包含Adid,狀態,數據。

在表視圖它顯示字符串和0號空值..

+0

什麼是self.fetchedRecordsArray viewDidLoad?你可以NSLog嗎?另外,爲什麼你不使用NSFetchedResultsController? – djromero 2014-10-08 12:55:21

+0

當我檢查Nslog它顯示像這樣「(實體:Ad; id:0x9a5a6c0 ;數據:) 「, 」(實體:Ad; id:0x9a5a6d0 ;數據:)「 – user3354840 2014-10-08 13:00:38

+0

請更新問題以包含 - [DBManager fetchAllAds]的內容。這可能是核心數據上下文的問題。核心數據是一個複雜的主題,我建議你檢查蘋果示例數據和一些開源項目,看看如何正確使用它。那裏有一些教程。 – djromero 2014-10-08 13:10:45

回答

0

我建議你放棄你fetchedRecordsArray,擁抱NSFetchedResultsController。它專門設計用於處理核心數據和表格視圖。

這幾乎可以消除你的問題,併產生更健壯和可擴展的代碼。您可以以這種方式顯示100.000s的廣告,而不會有任何問題。

還有一個提示,即您可能要事先檢查的內容:很可能您沒有正確保存數據。它看起來像是在創建後用[managedObjectContext save:&error]保存了每條記錄,但也許在填充狀態和數據後沒有正確執行此操作。檢查的方法是枚舉您的數組元素和NSLog這些信息位以檢查它們是否在那裏。

+0

嗨你幾乎是正確的...我使用[managedObjectContext保存:&錯誤]來保存記錄。而不是使用這種方法。有任何其他方法來保存記錄? – user3354840 2014-10-09 04:53:14

+0

方法是正確的 - 問題可能出在您的上下文所處的**狀態。如果我的回答有幫助,請先對它進行投票表決。 – Mundi 2014-10-10 10:46:30