iphone - iOS7 对此 NSMutableCharacterSet 算法的 react 不同

标签 iphone ios objective-c ipad

我有这个基本的文本检查代码,在 iOS 7 之前一直运行良好:

   NSMutableCharacterSet*testchars=[NSCharacterSet alphanumericCharacterSet];
  [testchars addCharactersInString:@".-"];

  BOOL didFindBadCharacters = ([userInput rangeOfCharacterFromSet:[testchars invertedSet]].location != NSNotFound);

这里的简单想法是检查用户的输入,即 userInput,如果用户输入的任何字符不是,则找到一个 true 的 BOOL 字母数字或包含点或破折号。也就是说,这些条目可以,但空格或符号则不行。

在 iOS 7 之前,这是有效的。我不明白为什么这会与 iOS 7 不同,但现在如果用户输入一个点或破折号,BOOL 在我登录时返回 true 以确保没有其他字符,例如空格,而是触发错误。

为什么这在 iOS 7 上会失败?看起来像基本的语言功能。

最佳答案

Why would this fail on iOS 7?

关于为什么这在 iOS 7 中会有所不同,我唯一的猜测是他们修复了一个错误:在 iOS 7 之前, cocoa 用于为内置字符集返回一个可变字符集。

文档没有说从 alphanumericCharacterSet 返回的 NSCharacterSet 应该是可变的,所以第一行的赋值是无效的,即使编译器没有报错。

这应该可以解决问题:

NSMutableCharacterSet*testchars = [[NSCharacterSet alphanumericCharacterSet] mutableCopy];

关于iphone - iOS7 对此 NSMutableCharacterSet 算法的 react 不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19017965/

相关文章:

ios - 在 Xcode 5.0 中运行单元测试时出错

objective-c - 使用 iOS NSRegularExpression 的 Ruby 风格字符串插值

ios - Storyboard - 如何在没有动画和显示屏幕的情况下自动执行转场

ios - CGImageCreateWithMaskingColors没有匹配的函数

iphone - 使用 Facebook iOS SDK 登录 UIWebView

iphone - UIPopoverController,如何改变它的大小?

iphone - 将 NSDefaults 字符串添加到 InAppSettingsKit 中

ios - iOS 设备上的葫芦测试启动应用程序但卡住在 "Scenario"

ios - 倒计时错误(NSDate 和 Objective-C)

iphone - 同一目标上的设备与模拟器的 xcode 不同链接器/cflags?