2

私は Objective C にかなり慣れていないのですが、動作しているように見えて不安になることがあります。それがこれです。

 PFObject *templateObject = [templateObjectId objectForKey:@"GameUnitTemplate"];

    if(templateObject != nil )
    {

ポイントは、templateObjectId オブジェクトの一部のバージョンでは GameUnitTemplate がなく、まったく別のクラスであるということです。したがって、これは GameUnitTemplate が存在するかどうかを確認する安全な方法ですか?

4

3 に答える 3

5

(またはサブクラス)templateObjectIdであると仮定すると、安全です。NSDictionaryあなたはただnil戻ってきます。文書化されているように:

パラメータ: aKey: 対応する値を返すキー。

戻り値: に関連付けられた値aKeyまたは値が関連付けられていない場合は nilaKey

于 2013-05-14T13:01:46.927 に答える
1

レシーバーに一致するオブジェクトが含まれていない場合は、 が返されnilます。これは完全に安全です。実装では、必要に応じて nil をテストする必要があります。

もちろん、これは受信者が応答することを前提としてい-objectForKey:ます (と混同しないでください-valueForKey:)。

于 2013-05-14T13:02:18.397 に答える
0

templateObjectIdが の場合、これで問題ありません。結果としてNSDictionary得られるだけです。nil(そうでない場合NSDictionary、これは問題になる可能性があります。)

于 2013-05-14T13:02:24.373 に答える