2012-07-19 91 views
0

我有3個實體保存在覈心數據。我在應用程序中的幾個視圖控制器加載這些 - 有時加載所有數據3.下面是我如何加載這些數據並將其分配給一個數組。一旦它在數組中,然後我根據應用程序的當前頁面進行排序,篩選,計數或我需要做的任何操作。Xcode加載核心數據滯後

if (managedObjectContext == nil) 
{ 
    managedObjectContext = [(AppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext]; 
} 
NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Event" inManagedObjectContext:managedObjectContext]; 
[request setEntity:entity]; 
[request setReturnsObjectsAsFaults:NO]; 
NSError *error = nil; 
NSMutableArray *mutableFetchResults = [[managedObjectContext executeFetchRequest:request error:&error] mutableCopy]; 
if (mutableFetchResults == nil) 
{ 
    // Handle the error. 
    NSLog(@"mutableFetchResults == nil"); 
} 
[self setEventsArray:mutableFetchResults]; 

我遇到的問題是:

  • 我不喜歡有很多重複的代碼 - 這是出現在需要的核心數據每個視圖控制器。
  • 從一個實體,我保存這是造成滯後圖像的二進制數據時予加載數據

所以,有一種方法使用諸如eventId = [NSString stringWithFormat:@"%@", currentEventId]

條件從核心數據加載或者(可能更合適)有一個單獨的類,用於在應用程序啓動時加載數據。然後我可以訪問用於當前頁面的類數組(加載數據)。然後只要保存,編輯或刪除一個對象就重新加載數據。

任何幫助,非常感謝。

回答

1
  1. 來回您的第一個問題,你應該看看MagicalRecord帶來的Ruby on Rails的活動記錄到CoreData。它會縮短清除核心數據代碼的時間。

  2. 請注意,如果您的圖片不是很小,您應該將它們存儲在與您的主要實體存在關係的單獨實體中。這應該可以幫助你解決滯後問題,因爲只有當你明確提出要求時纔會通過關係加載圖像。你可以看到here Marcus Zarra的答案(寫了一本關於核心數據的好書)。總是有一個選項,您的圖像對於核心數據來說太大了。

希望它可以幫助

+0

啊,是啊。我很可能會將這些圖像保存爲一個單獨的實體。目前他們來自相機,然後:'UIImageJPEGRepresentation(giftImage,0.5);' – Patrick 2012-07-19 18:53:57