2015-01-10 2 views
0

У меня есть приложение iPad (XCode 6.1.1, iOS 8.1, ARC), что при запуске его на симуляторе 8.1 приложение вылетает, сравнивая длину строки. Это работает уже более года и вчера остановилось. Это код:NSString.length вызывает сбой (NSInvalidArgumentException)

Это код в файле .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 и iPad под управлением iOS 8.1. Я не понимаю, где/почему NSCFNumber «на картинке».

Мой вопрос: какие идеи, что причиной этого (прежде чем я представить RADAR?)

+2

Звучит так, что это воспроизводимо. Почему бы не определить свои собственные сеттеры, которые проверяют тип своего аргумента и выгружают трассировку/точку останова стека, когда это не 'NSString'? – CRD

+0

Возможно, вы определили другое поле под названием 'shopCloseHour'? Замените 'shopCloseHour'' _shopCloseHour' в операторах 'if' и' NSLog' и повторите попытку. –

ответ

1

Где вы назначили NSNumber к shopCloseHour, это может произойти при присвоении значения из JSon .Проверить

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

По-видимому, он изменяется, когда он хранится или извлекается из NSUserDefaults. Большое вам спасибо ... это даст мне много сделать сегодня! : D – SpokaneDude

+1

Было бы лучше исправить причину проблемы. Использование инструкции 'if' в этом ответе было бы полезно для отладки, но код не должен оставаться. – rmaddy

+0

Чтобы избежать этого, вы должны использовать специальные методы NSUserDefaults, чтобы избежать этого, а не использовать objectForKey: –

Смежные вопросы