我需要将一个CoreData实体数组从我的主视图传递给TableViewController。
我使用了很多stackoverflow帖子来帮助自己,并认为它有效。
但是当我构建我的应用程序时,我遇到了一个线程问题,显示:
[NSTaggedPointerString count]: unrecognized selector sent to instance".
我做了一些检查,问题是,在我的tableView中,Row的数量设置为0。
所以这是我的代码:
我的MainViewController.m中的prepareForSegue函数:
(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"sgPushDetail"])
{
checkDataSavedTableViewController *detail = segue.destinationViewController;
detail.datasToDisplay = _listOfDatas;
}
}
listOfDatas是NSManagedObject的NSArray,在我的声明中声明 MainViewController.h
datasToDisplay是我在TableViewController中声明的NSArray。
这是我将数据放在TableViewController中的函数:
(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"dataCells" forIndexPath:indexPath];
NSString *rowArray = self.datasToDisplay[indexPath.row];
cell.textLabel.text = rowArray;
return cell;
}
(但错误出现在ViewDidLoad中,所以meeeh)
我该如何进一步处理?
答案 0 :(得分:0)
在prepareforsegue
中添加断点。并检查你的阵列。我认为你的数组是nil,所以你的表视图没有获取数据。放置必要的断点,或者你可以在tableviewcontroller的prepareforsegue
和viewdidload
中打印数组,并检查你是否在数组中获取数据!
希望这会有所帮助:)
答案 1 :(得分:0)
您的错误位于NSString *rowArray = self.datasToDisplay[indexPath.row];
datasToDisplay 是一个NsManagedObject数组,而不是一个字符串数组。所以你需要从你的NsManagedObject中获取字符串值:
NSString *rowArray = [self.datasToDisplay[indexPath.row] valueForKey: @"stringKey"]
答案 2 :(得分:0)
好的,我很愚蠢。
因为我使用CoreData,所以我已经有了一个实体列表。我不需要我的NSArray的randomMeh,我只需要:
NSEntityDescription *entityDesc = [NSEntityDescription entityForName:@"Contact" inManagedObjectContext:context];