0
最近,我嘗試使用NSpredicate在swift項目中驗證電話號碼,但它總是崩潰。 的代碼是這樣的:爲什麼在編碼URL時格式化NSPredicate導致快速崩潰?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Override point for customization after application launch.
var regexPhoneNum = NSPredicate(format: "SELF MATCHES %@", "^1[0-9]{10}$")
println(regexPhoneNum)
return true
}
它崩潰的
var regexPhoneNum = NSPredicate(format: "SELF MATCHES %@", "^1[0-9]{10}$")
崩潰信息:
2015-09-08 09:51:17.044 PredicateTest[4319:79934] -[__NSCFString count]: unrecognized selector sent to instance 0x7c153110
我發現引起的NSString的類別,它使用Objective-C的那一聲,代碼如下:
.h
@interface NSString (HttpManager)
- (NSString *)encode;
@end
.m
@implementation NSString (HttpManager)
- (NSString *)encode
{
NSString *outputString = (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(NULL,
(CFStringRef)self,
NULL,
(CFStringRef)@"!*'();:@&=+$,/?%#[]",
kCFStringEncodingUTF8
));
outputString = [outputString stringByReplacingOccurrencesOfString:@"<null>" withString:@""];
return outputString;
}
@end
任何人誰可以解決這個問題,或者給我一些建議,謝謝!
在我的情況下,它沒有崩潰在xcode 7 beta 5測試 –
我也不能重現與Xcode 6.4的問題。這是你的確切代碼嗎? - 錯誤信息表明你有一個NSString的地方需要一個NSArray。 –
好吧,我創建了一個新項目,並在'application didFinishLaunching'函數中粘貼代碼行也能正確運行。這是我的確切代碼,謝謝 –