Objective C 这两个 return 应该是同一个值
Objective C should these two return the same value
下面代码中notificationIdToCancle1
和notificationIdToCancle2
有什么区别:
NSDictionary* parameters = (NSDictionary* )parametersObject;
if (parameters != nil) {
NSString* notificationIdToCancle1 = (NSString* )[parameters objectForKey:@"id"];
NSString *notificationIdToCancle2 = [NSString stringWithFormat:@"%@",[parameters valueForKey:@"id"]];
}
两者不应该包含相同的值吗?
NSString* notificationIdToCancle1 = (NSString* )[parameters objectForKey:@"id"];
这一行是抓取字典中的对象,无论它是否存在,都将其转换为 NSString。
[NSString* stringWithFormat:@"%@",[parameters valueForKey:@"id"]];
这一行,我认为你有误,你可能不想要第一个'*'。您可能还想调用 'objectForKey:' 而不是 'valueForKey:'。 objectForKey: 将 return 字典中的条目,而 valueForKey: 将使用键值编码 return 一个值。
所以:
[NSString stringWithFormat:@"%@",[parameters objectForKey:@"id"]];
这会获取字典中的对象,在其上运行 'description',其中 return 是一个 NSString 实例。所以你肯定会从中得到一个 NSString 实例。
下面代码中notificationIdToCancle1
和notificationIdToCancle2
有什么区别:
NSDictionary* parameters = (NSDictionary* )parametersObject;
if (parameters != nil) {
NSString* notificationIdToCancle1 = (NSString* )[parameters objectForKey:@"id"];
NSString *notificationIdToCancle2 = [NSString stringWithFormat:@"%@",[parameters valueForKey:@"id"]];
}
两者不应该包含相同的值吗?
NSString* notificationIdToCancle1 = (NSString* )[parameters objectForKey:@"id"];
这一行是抓取字典中的对象,无论它是否存在,都将其转换为 NSString。
[NSString* stringWithFormat:@"%@",[parameters valueForKey:@"id"]];
这一行,我认为你有误,你可能不想要第一个'*'。您可能还想调用 'objectForKey:' 而不是 'valueForKey:'。 objectForKey: 将 return 字典中的条目,而 valueForKey: 将使用键值编码 return 一个值。
所以:
[NSString stringWithFormat:@"%@",[parameters objectForKey:@"id"]];
这会获取字典中的对象,在其上运行 'description',其中 return 是一个 NSString 实例。所以你肯定会从中得到一个 NSString 实例。