私は辞書を持っています。次のように、その値の 1 つを抽出します。
NSString *magicValue= [filterDict valueForKey:[filterDict allKeys][0]];
[SomeClass foo: magicValue];
そして foo は次のとおりです。
- (void)foo:(NSString*)magicValue
{
NSLog("magicValue is string:%@",[magic isKindOfClass:[NSString class]] ? @"YES" : @"NO");
NSLog("magicValue is number:%@",[magic isKindOfClass:[NSNumber class]] ? @"YES" : @"NO");
}
辞書の値が数値の場合、magicValue は になりますNSNumber
。したがって、定義された文字列ポインターはNSNumber
. ログは、番号チェックに対して yes を返します。
クラス「magicValue」が何であるかを確認するために、そのようなメソッドに保護を追加したことはありません。文字列パラメーターでメソッドを定義すると、文字列になると想定しました。
そのような振る舞いを説明し始めて、常にチェックを追加する必要がありますか、それともそのような方法でその辞書の値を魔法に割り当てて私の方法を使用した人のせいですか. ベストプラクティスのアドバイスと、これを処理する方法が必要です。
この質問はすでに回答されている可能性がありますが、検索方法がわかりませんでした。