我使用Core Data创建了我的应用程序,声明了2个属性,SongLyrics和MovieSongName,两者都是字符串。然后在xib中我为MovieSongName创建了一个文本字段,为SongLyrics创建了一个文本视图。为了存储这些,我使用了以下代码
-(void)saveData
{
LyricsAppDelegate *appDelegate = [[UIApplication sharedApplication]
delegate];
NSManagedObjectContext *managedObjectContext = [appDelegate managedObjectContext];
NSEntityDescription *entityDesc = [NSEntityDescription
entityForName:@"Lyrics"
inManagedObjectContext:managedObjectContext];
NSManagedObject *LyricsObjectEnglish;
LyricsObjectEnglish = [NSEntityDescription
insertNewObjectForEntityForName:@"English_Songs"
inManagedObjectContext:managedObjectContext];
[LyricsObjectEnglish setValue:song_lyrics.text forKey:@"SongLyrics"];
[LyricsObjectEnglish setValue:song_name forKey:@"MovieSongName"];
song_lyrics.text=@"";
song_name.text=@"";
NSError *error;
[managedObjectContext save:&error];
}
单击保存按钮时,会中止以下错误。
2012-01-27 10:50:52.071歌词[4624:207] * 由于未捕获的异常'NSInvalidArgumentException'而终止应用,原因:'属性的值不可接受的类型:property =“ MovieSongName“;期望的类型= NSString;给定type = UITextField; value =>。'
任何人都可以帮助我吗?我第一次使用Core Data而且我有点困惑。
答案 0 :(得分:5)
错误正在告诉您问题的确切原因。具体来说,MovieSongName需要NSString
值,但您提供的值为UITextField
,因为您尝试将其song_name
而不是song_name.text
。
正确的代码是:
[LyricsObjectEnglish setValue:song_name.text forKey:@"MovieSongName"];