NSString.length导致崩溃(NSInvalidArgumentException)

时间:2015-01-10 17:29:27

标签: objective-c nsstring ios8.1

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

这是.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);

这是我得到的错误:

  

***由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:' - [__ NSCFNumber长度]:无法识别的选择器发送到实例0xb000000000003203'

在7.1模拟器和运行iOS 8.1的iPad下运行时运行正常。我不明白NSCFNumber在哪里/为什么“在图片中”。

我的问题是:是什么导致了这个问题(在我提交RADAR之前?)

1 个答案:

答案 0 :(得分:2)

在某个地方你已经为shopCloseHour分配了一个NSNumber,当从json分配值时会发生这种情况。查看

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