user2213271 user2213271 - 1 month ago 13
iOS Question

__NSCFString objectForKeyedSubscript: exception

I take datas from server. My app work fine in Sinulator and test device iPhone 4s, but one man have problem on iPod 4. He get exception:

-[__NSCFString objectForKeyedSubscript:]: unrecognized selector sent to instance 0x1d263a20


I cann't use this device so I write code to know where crash was.

if (![dictionaryRest[@"compliments"] isEqual:[NSNull null]]) {
NSMutableArray *array = [NSMutableArray new];
NSMutableArray *firstArray = [NSMutableArray new];
for (NSDictionary *dic in dictionaryRest[@"compliments"]) {
Compliment *compl = [Compliment new];
if (![dic[@"ID_promotions"] isEqual:[NSNull null]])
compl.ID = [dic[@"ID_promotions"] integerValue];


So in last 2 strings this exception was. What the reason of this? So I understand that I need use

if ([dict objectForKey:[@"compliments"])


instead

if (![dict[@"compliments"] isEqual:[NSNull null]])


and in all another cases.

I test now and I have in my dictionary for ID:
enter image description here

Answer

You have an NSString instance in your dictionary where you expect a dictionary.

Note that your "use this instead of that" has nothing to do with the problem.