尝试获取不存在的密钥的对象是否安全?

时间:2013-05-14 12:59:43

标签: ios objective-c

我对Objective C很新,有些东西似乎有用,但让我感到不安,就是这样。

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

    if(templateObject != nil )
    {

关键是在templateObjectId对象的某些版本中没有GameUnitTemplate,它是另一个类,所以这是检查GameUnitTemplate是否存在的安全方法吗?

3 个答案:

答案 0 :(得分:5)

这是安全的,假设templateObjectIdNSDictionary(或子类)。你只会得到nil。正如documented

参数aKey:要返回相应值的键。

返回值:与aKey相关联的值,如果没有值与aKey 相关联,则为nil。

答案 1 :(得分:1)

如果接收器不包含匹配的对象,它将返回nil。这是完全安全的。您的实现应该适当地测试为零。

这当然假设接收者回复-objectForKey:(不要与-valueForKey:混淆)。

答案 2 :(得分:0)

如果templateObjectIdNSDictionary,那么这很好 - 您只需获得nil。 (如果它不是NSDictionary那么这可能会有问题。)