Причина, по которой это не сработало или не предупредило вас, состоит в том, что valueForKey:
возвращает объект типа id
, который вы можете назначить любому типу Objective-C.Вы должны знать, какую ценность вы получаете от своих коллекций, чтобы безопасно их использовать.В этом случае вы знаете, что он содержит NSNumber
, поэтому вы должны ожидать NSNumber
, а если вам нужна строка, вам нужно будет выполнить правильные преобразования.
NSNumber *test = [dict valueForKey:@"key"];
NSLog(@"%@, type of %@", test, NSStringFromClass([test class]));
//If you need a string
NSString *testStr = [test stringValue];