forループは辞書内の辞書を繰り返し、完全に別の辞書のキーと一致するキーを持つループを検索します。2つの辞書値を比較すると、NSInvalidArgumentExceptionが返されます
両方の値が何も一致しない場合は問題ありません。しかし、彼らは私に、このエラーを与えて、それがクラッシュし、(常に256文字の長NSStringのである)の値を持っている瞬間:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSTaggedPointerString objectForKey:]: unrecognized selector sent to instance 0xa000000333939394'
は、私は何か見当もつかない、および任意の助けいただければ幸いです。
必要に応じてコードを追加できます。
ありがとうございました。
更新:タイプをチェックするためにforループを更新しましたが、同じ問題が発生します。
更新2:変更済み||あなたはデータの種類を確認する必要があり、比較する前に、オブジェクト型NSTaggedPointerString
でobjectForKey
メソッドを呼び出したので& &
for (id rDCKey in rootDictCopy)
{
tempHouseNumber = rDCKey;
if ([[rootDictCopy objectForKey:rDCKey] isKindOfClass:[NSMutableDictionary class]] && [[routePathRootDictCopy objectForKey:houseNumber] isKindOfClass:[NSMutableDictionary class]])
{
if ([[[rootDictCopy objectForKey:rDCKey] objectForKey:@"RandomUniqueIdentifier"] isEqual:[[routePathRootDictCopy objectForKey:houseNumber] objectForKey:@"RandomUniqueIdentifier"]])
{
NSLog(@"done");
goto DONE;
}
}
else
{
NSLog(@"ERROR");
}
}
おそらく、NSStringオブジェクトの代わりにNSStringオブジェクトのobjectForKeyを呼び出すことがあります。 rootDictCopyの内容を確認します。タイプチェックを追加することができます。 :P –
@AmitTandelちょうどチェックされて、彼らは両方とも適切なNSMutableDictionariesであり、NSMutableDictionaryと同じようにログに現れます。 – JustMe
"rootDictCopy"と "routePathRootDictCopy"のログはどのように表示できますか? –