Iphone 将NSDictionary转换为NSString

Iphone 将NSDictionary转换为NSString,iphone,ios,nsstring,nsdictionary,Iphone,Ios,Nsstring,Nsdictionary,我试图将NSDictionary的内容放入NSString中进行测试,但不知道如何实现这一点。可能吗?如果是这样的话,人们会怎么做呢 我这样做的原因是,我需要在设备上没有运行调试器的情况下检查NSDictionary的内容。由于我必须从ios的多任务栏中删除正在运行的应用程序,因此我可以查看保存到字典中的值是否在以后仍然可用。您可以调用[aDictionary description],或者在任何需要格式字符串的地方,只需使用%@来代替字典: [NSString stringWithFormat

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


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

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

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


您可以使用
NSDictionary
NSObject
继承的
description
方法,或者编写自定义方法,根据您的喜好格式化
NSDictionary

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

转换为字符串

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

如果您想使用for
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

ahh。。酷,是的,我知道如何记录它,但不知道你可以这样做,让它成为一个nsstring。。酷,我们能不能只做[myDictionary description]以字符串格式获取字典?类似的问题:它适用于单个字典。如果有多本词典怎么办?我无法转换回字典。@Vinetashtekar请看这个问题的标题。问题是NSDictionary到NSString的转换。@DanialHussain是的,我知道。所以字典中可以有数组作为值,对吗?所以当它这样做的时候,这个方法就不起作用了。description方法提供了一些实际字典数据之外的额外信息。这个方法有效!
extension Dictionary {

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

}