2013-09-25 2 views
0

Только что обновил мой XCode с 4.6 до 5, а вместе с ним и iOS7 SDK.Пустые массивы и iOS 7 SDK

Я заметил, что всех операции (например, Предикатные фильтры и т.д.) Я пытаюсь выполнить на пустом NSArray или NSMutableArray вызвать исключение (NSInvalidArgumentException) при запуске моего приложения в тренажере для любой прошивки 5.1 или IOS 7 (до сих пор пытается скачать iOS 6.1) Мои массивы создаются (так что они не Nil), но у них есть 0 записей.

Так что код, который раньше работал отлично в XCode 4.6, теперь сбой, и мне нужно добавить дополнительный IF, чтобы проверить, не удалось ли array.count == 0 выполнить эту строку кода во всем моем приложении. (Монументальное задание)

Когда я загружаю приложение (версию I, опубликованное с XCode 4.6) из AppStore на устройство iOS7, он работает нормально.

Кто-нибудь еще испытывает это?

+0

Нет, все работает отлично в iOS 7, никаких монументальных переделок не требуется. Какие операции вы пытаетесь выполнить и как вы создаете свои массивы? Можете ли вы привести пример пары строк кода, которые терпят неудачу? Может быть, вы отправляете операции NSMutableArray в NSArray или что-то вроде этого? –

+1

Можете ли вы показать одно из NSInvalidArgumentExceptions, которое вы видите? – bneely

+0

Сбой на последней строке. Этот код работает в XCode 4.6.3. NSMutableArray, хранящийся в [defaults objectForKey: @ "Wards"], не является Nil. NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults]; NSData * userData = [defaults objectForKey: [NSString stringWithFormat: @ "% d", UserID]]; NSMutableDictionary * userDictionary = [[NSKeyedUnarchiver unarchiveObjectWithData: userData] mutableCopy]; NSArray * SelectedWards = [[NSArray alloc] initWithArray: [defaults objectForKey: @ "Wards"]]; –

ответ

1

на основе этого кода, я думаю, что значение, сохраненное в [по умолчанию objectForKey: @ «Wards»] не является массив, пожалуйста, дважды проверьте значение

NSArray *SelectedWards = [[NSArray alloc]initWithArray:[defaults objectForKey:@"Wards"]]; 

вы можете использовать следующий код для проверки

if(![[defaults objectForKey:@"Wards"] isKindOfClass:[NSArray class]]) 
{ 
    NSLog("OOPs! Wards is not an array"); 
} 
+0

Смутно, вы правы. Спасибо. Кажется, какой-то временный код хранит NSMutableDictionary в моих настройках по умолчанию. После того как я сбросил содержимое и настройки моего симулятора, он сработал. Спасибо! –

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