このエラーを調べると、NSArray にメッセージを[__NSArrayI allKeys]: unrecognized selector sent to instance
送信するときに発生するように見えますが、この場合は非常に明確に NSDictionary に送信しています。allKeys
NSDictionary
Pocket API とやり取りするときに使用するコードは次のとおりです。
NSDictionary *articles = [response objectForKey:@"list"];
// Create an array we can use to sort the keys (and thus the articles) in order of when they were added
NSMutableArray *allKeys = [[articles allKeys] mutableCopy];
そこの最後の行でエラーが発生します。しかしarticles
、非常に明確に NSDictionary として宣言されていますか? なぜそれが好きではないのですか?
奇妙なことに、実行時に検査すると、NSArray であると表示されます。なぜ変わったのですか?
(lldb) po articles
$5 = 0x082103e0 <__NSArrayI 0x82103e0>(
)
(lldb) po [articles class]
$6 = 0x01b83b8c __NSArrayI
(lldb)