将NSDictionary转换为NSString

问题描述 投票:57回答:4

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

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

iphone ios nsstring nsdictionary
4个回答
127
投票

您可以调用[aDictionary description],或需要格式字符串的任何地方,只需使用%@来代表字典:

[NSString stringWithFormat:@"my dictionary is %@", aDictionary];

NSLog(@"My dictionary is %@", aDictionary);

76
投票

以上解决方案仅将字典转换为字符串,但不能将其转换回字典。为此,这是更好的方法。

转换为字符串

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];
}

12
投票

您可以使用descriptionNSDictionary继承的NSObject方法,也可以编写自己喜欢的格式化NSDictionary的自定义方法。


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

© www.soinside.com 2019 - 2024. All rights reserved.