我需要執行提取請求。但是當我這樣做的時候,我沒有錯NSManagedObject
s(每個對象大約5 Mb,這就是爲什麼我得到內存警告)。 Apple提供錯誤核心數據的可能性(當對象沒有加載到RAM中時)。我想我的對象使用這種可能性。核心數據。 ExecuteFetchRequest與錯誤NSManagedObjects(不在RAM中)
這裏是我的代碼
+ (NSMutableSet *)GetImagesWithPredicate:(NSPredicate *)predicate
{
NSString *entityName = kEntityName;
AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];;
NSManagedObjectContext *context = appDelegate.managedObjectContext;
NSEntityDescription *entityDesctiption = [NSEntityDescription
entityForName: entityName
inManagedObjectContext:context];
// find object
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:entityDesctiption];
[request setPredicate:predicate];
NSArray *objects = [context executeFetchRequest:request error:nil];
[request release];
if (objects == nil)
{
NSLog(@"there was an error");
return nil;
}
NSMutableSet *set = [NSMutableSet setWithArray:objects];
return set;
}
其中謂詞是(id < 500)
。
應用程序崩潰後
NSArray *objects = [context executeFetchRequest:request error:nil];
,因爲對象的所有數據將顯示在iPhone的RAM。
看來默認選項returnsObjectsAsFaults = YES
不起作用。
你能發佈崩潰日誌嗎?另外說一說你的模型和圖像(大小)。 –
沒有崩潰日誌。只是記憶警告,然後墜毀。當我試圖只抓取5個對象 - 一切正常(設置fetchLimit) –