【问题标题】:'-[__NSArrayM _fastCStringContents:]: unrecognized selector sent to instance'-[__NSArrayM _fastCStringContents:]: 无法识别的选择器发送到实例
【发布时间】:2016-10-11 02:20:48
【问题描述】:

当我尝试将对象添加到我的可变数组时,我不断得到一个无法识别的选择器,当我在我的表格视图中选择一个单元格时,我试图向可变数组添加和删除项目,这是我的代码:

@interface SomeViewController
  @property (nonatomic, strong) NSMutableArray *selectedItems;
@end

视图确实加载了:

-(void)viewDidLoad {

    [super viewDidLoad];

    self.selectedItems = [[NSMutableArray alloc] init];
}

选择单元格:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    MyCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];

    [self.selectedItems addObject:[NSString stringWithFormat:@"%@", cell.contactID]];

MyCell 文件上的联系人 ID 属性为:

@property (strong, nonatomic) NSString *contactID;

我不断收到此错误:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayM _fastCStringContents:]: unrecognized selector sent to instance 0x7fc3dd1091b0'

【问题讨论】:

  • 你为什么使用[self.selectedItems addObject:[NSString stringWithFormat:@"%@", cell.contactID]];而不是[self.selectedItems addObject:cell.contactID];? 尝试更改它
  • 我在这里查看了一些问题,发现它可能会有所帮助。所以我试了一下。我已经尝试了您建议的两种变体,并且都返回了我得到的完全相同的错误。
  • contactID 在您的情况下每次都不是字符串。尝试调试您的单元格数据。添加exception breakpoint

标签: ios objective-c uitableview nsstring nsarray


【解决方案1】:

在某处你有一个你认为是字符串的对象,而实际上它是一个可变数组 - 这就是错误消息所说的内容。在异常上设置一个断点,它应该告诉你它发生的确切位置,然后找到你认为是字符串的数组。

【讨论】:

  • 你以秒为单位赢了:)
【解决方案2】:

尝试在普通的 UITableView 中实现。如果您没有遇到任何问题,那么它就是您的 MyCell 的问题。也检查可变或复制数组。尝试 NSLog cell.contactID

【讨论】:

    【解决方案3】:

    可能是当您将数组直接传递给NSLog 时,例如NSLog(array),而不是NSLog(@"%@", array)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多