在我的核心日期中,名为Event的实体名称包含一个名为“ name”的属性。我想从coredata到nsarray获取term的所有值。我使用了下面的代码,它不起作用。任何人请帮助。
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"Event" inManagedObjectContext:managedObjectContext]];
NSError *error = nil;
NSArray *events = [managedObjectContext executeFetchRequest:request error:&error];
NSAssert2(events != nil && error == nil, @"Error fetching events: %@\n%@", [error localizedDescription], [error userInfo]);
NSMutableArray *namesArray = [[NSMutableArray alloc]init];
namesArray = [events valueForKey:@"name"];
最佳答案
您的代码很接近,即使您正在泄漏内存,它也应该可以正常工作。
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"Event" inManagedObjectContext:managedObjectContext]];
NSError *error = nil;
NSArray *events = [managedObjectContext executeFetchRequest:request error:&error];
NSAssert2(events != nil && error == nil, @"Error fetching events: %@\n%@", [error localizedDescription], [error userInfo]);
//You were leaking your request here
[request release], request = nil;
//The following line is redundant. You are leaking an array here
//NSMutableArray *namesArray = [[NSMutableArray alloc]init];
NSArray *namesArray = [events valueForKey:@"name"];
此时,您应该有一个名称数组,它们是
NSString
实例。下一个问题是-为什么?当您已经具有
NSManagedObject
实例时,为什么需要将它们拉出到字符串数组中?为什么断开数据与核心数据对象的连接。