Недавно я модернизировал XCode8 я столкнулся вопрос в isKindOfClass
методе этот код работает до в iOS9
, но в iOS10
вдруг [items isKindOfClass: [NSMutableArray class]]
компилятор не собирается для условия цикла может я знаю, в чем причина?Выпуск облицовочный в isKindOfClass в iOS10
NSMutableArray
является класс ребенок NSArray
поэтому, когда я меняюсь к [NSArray class]
то он работает нормально, так что я путаю почему это изменение влияет на NSMutableArray
класса, который является классом ребенок NSArray
?
NSMutableArray *items = [jsonDictionary objectForKey:@"items"]; // Here i am taking response in NSMutableArray
if ([items isKindOfClass: [NSMutableArray class]] && items != nil) // not working {
for (NSMutableDictionary *item in items)
{
// Rest of Code
}
}
Этот код работает для меня, я м запутать выше код не работает до тех пор iOS9
, когда я изменить ниже код, то после работы в iOS10
:
NSMutableArray *items = [jsonDictionary objectForKey:@"items"];
if ([items isKindOfClass: [NSArray class]] && items != nil) // Changed to NSArray {
for (NSMutableDictionary *item in items)
{
// Rest of Code
}
}
Как вы разбираете JSON? Вы устанавливаете опцию для изменяемых контейнеров? Установили ли вы точку останова и проверили с помощью отладчика, какие «предметы» на самом деле? Все доказательства указывают на то, что они являются «NSArray», а не «NSMutableArray» – Paulw11
@ Paulw11 Yesi проверили все вещи, которые я проверил с элементами debuger, имеют элементы и этот 1-й блок кода, работающий до iOS9, и я проверил с отладчик, когда я изменил NSMutableArray на NSArray, тогда он будет работать нормально, и это произошло только в iOS10 –
Итак, что такое класс 'items', показанный в отладчике? – Paulw11