属性:property的值不可接受的值

时间:2012-01-27 05:27:42

标签: objective-c xcode

我使用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而且我有点困惑。

1 个答案:

答案 0 :(得分:5)

错误正在告诉您问题的确切原因。具体来说,MovieSongName需要NSString值,但您提供的值为UITextField,因为您尝试将其song_name而不是song_name.text

正确的代码是:

[LyricsObjectEnglish setValue:song_name.text forKey:@"MovieSongName"];