2012-08-29 27 views
0

代替我還是新來NSMangedObject S和我有麻煩在一定的指數更換對象。NSMangedObject在指數

for (NSString *file in filelist){ 

    NSManagedObject *fileEntity = [NSEntityDescription insertNewObjectForEntityForName:@"File" inManagedObjectContext:[self managedObjectContext]]; 
    [fileEntity setValue:file forKey:@"filename"]; 

    NSImage *audioImage = [NSImage imageNamed:@"tag_white.png"]; 
    [fileEntity setValue:audioImage forKey:@"taggedImage"]; 
    [markedAudioFiles addObject:audioImage]; 

} 

正如你所看到的,我可以很容易地插入到管理對象中。它在桌面上顯示文件和所有內容。不過,我想在爲@"taggedImage"關鍵某個索引改變一些值。

所以,我想是這樣的:

NSEntityDescription *fileEntity = [NSEntityDescription entityForName:@"File" inManagedObjectContext:[self managedObjectContext]]; 
NSImage *audioImage = [NSImage imageNamed:@"tag_green.png"]; 

[fileEntity replaceValueAtIndex:index inPropertyWithKey:@"taggedImage" withValue:audioImage]; 

我得到的錯誤是:

[valueForUndefinedKey:]:此類 不是鍵值編碼兼容的關鍵taggedImage。

我甚至嘗試替換上面

NSManagedObject *fileEntity = [NSEntityDescription insertNewObjectForEntityForName:@"File" inManagedObjectContext:[self managedObjectContext]]; 

fileEntity聲明,但因爲它不是一個新對象,我想這是錯誤的。

回答

3

在你的第二個代碼塊fileEntity只是一個對象的描述,它不是一個實際的NSManagedObject所以它不會有密鑰taggedImages

然而,這不是你的代碼將無法正常工作的真正原因。這是我認爲你想要做的不是做到這一點的一個更大的問題!

如果你想在指數ň更新File對象的taggedImage財產,這不是做的方式。你的第一個問題是如何在CoreData中定義File對象 - 是按名稱命名的,是在日期創建的,是隨機的嗎?你不知道在ň所以要求的項目不作任何意義呢!

您需要查詢您的數據存儲,並按照特定的順序拿到物品(見NSFetchRequestCore Data tutorial蘋果。

一旦你有你的文件對象進行順序核心數據你要那麼你可以剛剛獲得了該項目的索引ñ,更新它的taggedImage,然後將其保存。


PS但是,這會變得非常低效的,有很多核心數據項,如果你把所有每次的時間,讓他們只想更新一個:)

+0

+ 1院長,好點! –