【发布时间】:2018-06-21 04:22:21
【问题描述】:
在解析 API 响应时,有时我不能依赖嵌入引号中的字符串。 ID 就是一个很好的例子,其中一些 API 会将数字 ID 作为字符串发送,而有些 API 会将其作为数字发送。
解析这样的值时有什么好的做法?如果我像这样简单地将其解析为NSString:
NSString *myID = (NSString *)message["myID"];
我最终可以得到一个包含(long)123 的NSString 对象。
当值实际上已经作为字符串发送时,使用stringValue 会导致问题(因为NSString 没有stringValue 函数)。
一种可行但有点难看的方法是这样的:
id myID = (NSString *)message["myID"];
if ([myID respondsToSelector:@selector(stringValue)])
{
myID = [myID stringValue];
}
【问题讨论】:
-
响应是协议。它应该始终相同,或者服务器端必须有非常具体的原因。 @superx3man 的答案似乎很容易解决,但您最好在执行此操作之前与服务器端交谈。
-
您不能将
long存储在字典中。当然它可以是一个NSNumber代表一个long。
标签: ios objective-c nsstring