在我的核心日期中,名为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实例时,为什么需要将它们拉出到字符串数组中?为什么断开数据与核心数据对象的连接。

10-02 01:12
查看更多