我需要执行获取请求。但是当我这样做时,我没有得到 fault NSManagedObject
(每个对象大约为 5 Mb,这就是我收到内存警告的原因)。Apple为 Core Data 提供了出错的可能性(当对象未加载到 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
不起作用。