我已尽力解决此问题,但始终出现以下错误:
-[__ NSCFConstantString ling]:无法识别的选择器已发送到实例0x12f80b0
我想做的是使用AlertView中的文本向核心数据和表视图添加行,因此启动AlertView并用户输入新语言的名称,然后将保存AlertView中的文本用户单击保存时将其添加到核心数据并添加到表视图中。
在表格视图中,这是相关的代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
if(cell == nil){
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
Languages *languagesDict = (Languages *)[languagesArray objectAtIndex:indexPath.row];
cell.textLabel.text = [languagesDict ling];
return cell;
}
在alertview中,这是单击“保存”按钮时的代码:
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if (buttonIndex == 1)
{
NSString *tempText = [alertView textFieldAtIndex:0].text;
if(!languagesArray)
{
languagesArray = [[NSMutableArray alloc]init];
}
[languagesArray insertObject:tempText atIndex:0];
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
[self.tableView insertRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
Languages *languagesDict = [NSEntityDescription insertNewObjectForEntityForName:@"Languages" inManagedObjectContext:_managedObjectContext];
[languagesDict setLing:tempText];
NSError *error = nil;
if (![_managedObjectContext save:&error])
{
}
}
}
有人可以告诉我我做错了什么吗?
最佳答案
您正在将NSString
对象插入到languagesArray
中。
当您尝试将对象提取回去时,在以下行中:
Languages *languagesDict = (Languages *)[languagesArray objectAtIndex:indexPath.row];
您正在将这些
NSString
对象(出于某种原因)强制转换为Languages
对象。然后,尝试对获取的对象调用ling
方法。但是
ling
中不存在NSString
方法,因此您将获得运行时崩溃和错误消息。关于iphone - iOS iPhone App中具有数据核心的 Unresolved MATTER,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19211901/