0

我尽力解决这个问题,但我不断收到以下错误:

-[__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;
}

在警报视图中,这是单击“保存”按钮时的代码:

  - (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])
        {
        }
    }
  }

有人可以告诉我我做错了什么吗?

4

1 回答 1

2

您正在将NSString对象插入languagesArray.

当您尝试将对象提取出来时,在该行中:

Languages *languagesDict = (Languages *)[languagesArray objectAtIndex:indexPath.row]; 

您正在将这些NSString对象(出于某种原因)转换为Languages对象。然后你尝试调用ling你获取的对象的方法。

但是该ling方法在 中不存在NSString,因此这就是您获得运行时崩溃和错误消息的方式。

于 2013-10-06T17:56:23.420 回答