Во время выполнения этого кода:
NSData *archivedSavedData = [[NSData alloc] init];
archivedSavedData = [defaults objectForKey:@"listOfAccessNumbers"];
NSLog(@"archivedSavedData length is %d", [archivedSavedData length] );
Я получаю эту ошибку (последняя строка) только при работе на подключенном устройстве:
[__NSCFArray length]: нераспознанный селектор отправлен на экземпляр 0x2398a0
2012-03-13 20: 25: 33.088 [7301: 707] * Завершение работы приложения из-за необработанного исключения «NSInvalidArgumentException», причина: '- [__ NSCFArray length]: нераспознанный селектор, отправленный экземпляру 0x2398a0'
* Первый вызов стека вызовов:
(0x34dbc88f 0x361e3259 0x34dbfa9b 0x34dbe915 0x34d19650 0xccb1b 0x31e13e33 0x31e38629 0x31dfcd7d 0x31ebf4dd 0x31e0555d 0x31e05579 0x31e0540b 0x31e053e7 0xcfedf 0x31e12e53 0x31e0c985 0x31ddac6b 0x31dda70f 0x31dda0e3 0x3600f22b 0x34d90523 0x34d904c5 0x34d8f313 0x34d124a5 0x34d1236d 0x31e0ba13 0x31e08e7d 0xcfd39 0xcbe28)
прекратить называется бросить исключение
Этого не происходит при запуске на симуляторе или непосредственно на устройстве с профилем распространения (например, через testflight).
Кто-нибудь знает, как такое поведение могло произойти только в этом случае?
Спасибо.
ОБНОВЛЕНИЕ: при попытке заменить длину на количество я получаю следующую сложную ошибку: «Нет видимого @interface для« NSData »объявляет селектор« количество »»
UPDATE2: я понимаю, что это должен быть NSArray, а не NSData, но моя проблема заключается в том, что я сохранил архивированные NSData, поскольку мой массив состоит из пользовательских объектов, поэтому при сохранении в NSUserDefault мне пришлось архивировать эти данные в формате NSData. , Как еще я должен подходить к этому иначе?
Вот как я храню данные:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:array];
[defaults setObject:data forKey:@"listOfAccessNumbers"];
массив - это массив пользовательских объектов вида:
@interface NumberDataObj : NSObject {
NSString *inputName;
NSString *inputNum;
}