将 NSDictionary 转换为 NSString



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

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

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

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

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

上述解决方案只会将字典转换为字符串,但您无法将该字符串转换回字典。为此,这是更好的方法。

转换为字符串

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];
}
您可以使用

NSDictionaryNSObject继承的description方法,也可以编写一个自定义方法,根据自己的喜好设置NSDictionary格式。

如果你喜欢用于URLRequest httpBody

extension Dictionary {
    func toString() -> String? {
        return (self.compactMap({ (key, value) -> String in
            return "(key)=(value)"
        }) as Array).joined(separator: "&")
    }
}

//打印:字段=sdad&ServiceId=1222

最新更新