【问题标题】:NSArray compontentsSeperatedByString returns unrecognized selectorNSArray 组件SeperatedByString 返回无法识别的选择器
【发布时间】:2012-01-05 13:23:42
【问题描述】:

我有一个包含三个单词的字符串,由管道 (|) 分隔 我想把它们分成三个单独的字符串

NSArray *bits = [word.variants componentsSeparatedByString: @"|"];

NSLog(@"BITS: %@", bits);

这将返回一个无法识别的选择器。我在项目的其他区域使用了这行代码,它运行良好。但不是这个。

-[__NSArrayI componentsSeparatedByString:]: unrecognized selector sent to instance 0x6dbfa80

有什么想法吗?

【问题讨论】:

  • 这可能是因为word.variants 不是NSString。确定吗?
  • 这不能返回无法识别的选择器。它可能导致具有该名称的异常。确切的例外是什么?
  • 在我的帖子中添加了异常
  • word.variants 已经是一个 NSArray。

标签: iphone objective-c xcode cocoa


【解决方案1】:

我也有同样的问题,而我的字符串有这么多白色字符,换行符所以我什么都做不了,但最后我得到了如下解决方案:

 NSString *artwork = [currentURL valueForKey:@"artwork_large"]; 
     //i got the string artwork ,which is fetch from json.

[smg addObject:artwork];   
     // add this string to 0th index of an array name:smg


NSSet *setObj1 = [NSSet setWithArray:smg];
      //make the nsset for my array (named :smg)

NSString *pictureName = [[setObj1 allObjects] componentsJoinedByString:@","];
      //make the string from all the sets joined by ","


picArray = [pictureName componentsSeparatedByString:@","];
      //now its time for normal operation means makes the array (name: picArray) from string by componenet separatedbystring method

现在我得到了我们控制的完美数组

【讨论】:

    【解决方案2】:

    您没有给我们完整的错误消息,但我敢打赌:您过度释放了单词或变体,因此该消息被另一个对象接收,该对象没有选择器中提到的方法。试试NSZombieEnbled。你会在 StackOverflow 上找到足够多的关于它的帖子。

    编辑
    您发布的错误符合我的假设。唯一的其他解释:variants 是一个 NSArray。

    【讨论】:

    • 其实就是一个数组。我现在重做了,它可以工作。感谢您指出这一点!
    • variants 是一个 NSArray - __NSArrayImmutable
    【解决方案3】:

    如下,假设variants为NSString

    NSString *lvariant = word.variants;
    NSArray *bits = [lvariant componentsSeparatedByString: @"|"];
    

    【讨论】:

    • 将一个对象分配给另一个指针不应该改变任何东西。
    • 你确定word.variants返回NSString吗?
    • 这是很好的代码。您可以在调试器中查看实际发生的情况(即,变体不是字符串)。只需要一分钟。这种技术很有用。我们并没有我们想象的那么聪明!
    • 那么必须指出它是调试技术,而不是解决方案。
    猜你喜欢
    • 2014-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多