如何获得 id 对象的最佳字符串表示?

以下是否正确?有没有更简单的方法?

id value;
NSString* valueString = nil;
if ([value isKindOfClass:[NSString class]]) {
    valueString = value;
} else if ([value respondsToSelector:@selector(stringValue)]) {
    valueString = [value stringValue];
} else if ([value respondsToSelector:@selector(description)]) {
    valueString = [value description];
}

最佳答案

description 方法是 NSObject protocol 的一部分,所以 Cocoa 中的任何对象都会响应它;因此,您可以发送 description :

for( id obj in heterogeneousCollection ){
    [obj description];
}

此外,NSLog() 会将 description 发送到作为参数传递给 %@ 说明符的任何对象。

请注意,您不应将此方法用于日志记录/调试以外的目的。也就是说,您不应该依赖于在框架版本之间具有特定格式的框架类的描述,而应该开始做诸如基于另一个描述字符串构造对象之类的事情。

10-06 05:05
查看更多