将NSDictionary转换为NSString

时间:2012-04-12 00:53:12

标签: iphone ios nsstring nsdictionary

我试图将NSDictionary的内容放入NSString进行测试,但不知道如何实现这一点。可能吗?如果是这样,怎么会做这样的事情?

我这样做的原因是,我需要检查NSDicitonary的内容而不在我的设备上运行调试器。因为我必须从ios的多任务栏删除正在运行的应用程序,所以我可以看到我保存到字典中的值是否仍然可用。

4 个答案:

答案 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)

您可以使用descriptionNSDictionary继承的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