我已尽力解决此问题,但始终出现以下错误:

-[__ 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/

10-13 06:35