【问题标题】:unrecognized selector sent to instance exception in iOS7无法识别的选择器发送到 iOS7 中的实例异常
【发布时间】:2014-12-02 05:13:06
【问题描述】:

我需要检查一个字符串是否包含特定的字符串。为此,我使用了一个名为 ccontainsstring 的 NSString 类函数。此函数在 ios8 中运行良好,不会引发任何类型的异常,但在 ios7 中,它会引发名为

的异常
 unrecognized selector sent to instance 

我使用 try & catch 块来防止异常,但我可以知道为什么会这样吗?

提前致谢

【问题讨论】:

  • 能否请您输入您使用过的代码 sn-p 以便获得正确的解决方案?
  • 请粘贴代码以解决您的问题。
  • NSString *Test=arr_sub[0]; if([Test containsString:@"::"]) { NSlog(@"charecter found"); }

标签: objective-c iphone ios7 nsstring


【解决方案1】:

您可以签入框架标题。

- (BOOL)containsString:(NSString *)aString NS_AVAILABLE(10_10, 8_0);

这个containsString方法只存在于iOS 8之后,很明显iOS7会报错......

ios7请使用下面的方法,ios8可以使用上面的方法:

if ([string rangeOfString:@"bla"].location != NSNotFound)
{
  NSLog(@"charecter found");
} 

也许这可以解决您的问题。 谢谢

【讨论】:

  • 是的。 iOS 8 中添加了 containsString 函数,所以我们不能在 iOS 7 中使用它。
【解决方案2】:

检查从数组中检索的字符串是否不是nil。它会解决你的问题。

使用以下代码可能会解决您的问题。

NSString *Test=arr_sub[0];
if(Test!=nil && [Test containsString:@"::"])
{
    NSlog(@"charecter found");
}

如果您遇到任何其他问题,请告诉我。

【讨论】:

  • NSString *strn = @"my vals"; if ([strn containsString:@"va"]) { NSLog(@"GOT IT RE..."); } 这个东西在 ios8 中有效,但在 iOS7 中抛出异常。
  • 我认为这个功能是在 ios8 中添加的,在 ios7 中不起作用,这就是它抛出异常的原因。我已经检查了 ios8 和 ios7
猜你喜欢
  • 1970-01-01
  • 2020-06-27
  • 1970-01-01
  • 2019-08-28
  • 2012-07-24
相关资源
最近更新 更多