2010-07-09 47 views
0

在我的核心日期中名爲Event的實體名稱中存在一個名爲「name」的屬性。我想從coredata中獲取術語的所有值到nsarray。我用下面的代碼,它不工作。任何人都請幫助。將核心數據提取到數組中的問題

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"]; 
+0

什麼聲明不起作用? – falconcreek 2010-07-09 05:25:43

+0

我想將所有名稱的值加載到數組中。但它沒有加載。 程序崩潰,錯誤消息「***終止應用程序由於未捕獲的異常'NSRangeException',原因:'*** - [NSCFArray objectAtIndex:]:索引(0)超出界限(0)'」 請幫助。 – isarathg 2010-07-09 05:28:00

+0

看起來您的請求正在成功執行,但未找到事件。你確定商店裏有活動嗎?如果你嘗試在這段代碼之前插入並保存一個,會發生什麼? – 2010-07-09 06:17:49

回答

2

你的代碼很接近,即使你正在泄漏內存也應該工作。

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實例時,爲什麼你需要將它們拖放到一串字符串中呢?爲什麼要從Core Data對象中斷開數據。