我试图将NSDictionary的内容放入NSString进行测试,但不知道如何实现这一点。可能吗?如果是这样,怎么会做这样的事情?
我这样做的原因是,我需要检查NSDicitonary的内容而不在我的设备上运行调试器。因为我必须从ios的多任务栏删除正在运行的应用程序,所以我可以看到我保存到字典中的值是否仍然可用。
答案 0 :(得分:124)
您可以调用[aDictionary说明],或者您需要格式字符串的任何地方,只需使用%@代替字典:
[NSString stringWithFormat:@"my dictionary is %@", aDictionary];
或
NSLog(@"My dictionary is %@", aDictionary);
答案 1 :(得分:71)
Above Solutions只会将字典转换为字符串,但您无法将该字符串转换回字典。 为此,这是更好的方式。
转换为字符串
NSError * err;
NSData * jsonData = [NSJSONSerialization dataWithJSONObject:yourDictionary options:0 error:&err];
NSString * myString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
NSLog(@"%@",myString);
转换回字典
NSError * err;
NSData *data =[myString dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary * response;
if(data!=nil){
response = (NSDictionary *)[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&err];
}
答案 2 :(得分:12)
您可以使用description
中NSDictionary
继承的NSObject
方法,也可以根据自己的喜好编写NSDictionary
格式的自定义方法。
答案 3 :(得分:0)
如果您想用于URLRequest httpBody
extension Dictionary {
func toString() -> String? {
return (self.compactMap({ (key, value) -> String in
return "\(key)=\(value)"
}) as Array).joined(separator: "&")
}
}
//打印: Fields = sdad&ServiceId = 1222