NSString.length 导致崩溃(NSInvalidArgumentException)

NSString.length causes crash (NSInvalidArgumentException)

我有一个 iPad 应用程序(XCode 6.1.1,iOS 8.1,ARC)当我在 8.1 模拟器上 运行 它时,应用程序崩溃比较字符串的长度。这已经 运行ning 一年多了,昨天停止了。这是代码:

这是 .h 文件中的代码:

@property NSString *shopOpenHour;
@property NSString *shopCloseHour;

这是 .m 文件中的代码:

@synthesize shopOpenHour;
@synthesize shopCloseHour;

和:

if(shopOpenHour.length == 0 || shopCloseHour.length == 0)  { 

这也会导致崩溃:

NSLog(@"\n\nlength test: %d", (int)shopCloseHour.length);

这是我遇到的错误:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFNumber length]: unrecognized selector sent to instance 0xb000000000003203'

运行在 7.1 模拟器和 iPad 运行ning iOS 8.1 下 运行 没问题。我不明白 where/why NSCFNumber 是 "in the picture".

我的问题是:是否知道是什么原因造成的(在我提交 RADAR 之前?)

您在某个地方为 shopCloseHour 分配了一个 NSNumber,当从 json 分配值时可能会发生这种情况。检查

if ([shopCloseHour isKindOfClass:[NSString class]]) {
    // this is a string …
}