繁体   English   中英

将 NSDictionary 转换为 NSString

[英]convert NSDictionary to 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: "&")
    }

}

// 打印:Fields=sdad&ServiceId=1222

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM