目标C这两个应该返回相同的值

时间:2015-03-16 14:34:05

标签: objective-c nsstring

以下代码中notificationIdToCancle1notificationIdToCancle2的区别是什么:

NSDictionary* parameters = (NSDictionary* )parametersObject;
if (parameters != nil) {

    NSString* notificationIdToCancle1 = (NSString* )[parameters objectForKey:@"id"];
    NSString *notificationIdToCancle2 = [NSString stringWithFormat:@"%@",[parameters valueForKey:@"id"]];
}

两者都不应包含相同的值吗?

1 个答案:

答案 0 :(得分:2)

NSString* notificationIdToCancle1 = (NSString* )[parameters objectForKey:@"id"];

该行抓取字典中的对象,将其转换为NSString,无论是否为。

[NSString* stringWithFormat:@"%@",[parameters valueForKey:@"id"]];

这一行,我认为你有一个错误,你可能不想要第一个' *'。您也可能想要调用' objectForKey:'而不是' valueForKey:'。 objectForKey:将返回字典中的条目,而valueForKey:将使用键值编码返回值。

所以:

[NSString stringWithFormat:@"%@",[parameters objectForKey:@"id"]];

这需要字典中的对象,运行' description'在它上面返回一个NSString实例。所以你肯定会得到一个NSString实例。