将 NSDictionary 转换为 NSString

Posted

技术标签:

【中文标题】将 NSDictionary 转换为 NSString【英文标题】:convert NSDictionary to NSString 【发布时间】:2012-04-12 00:53:11 【问题描述】:

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

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

【问题讨论】:

类似问题:***.com/questions/3424439/… 【参考方案1】:

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

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

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

【讨论】:

啊.. 很酷,是的,我知道如何记录它,但不知道您可以这样做以将其转换为 nsstring.. 很酷, 我们可以通过[myDictionary description]来获取字符串格式的字典吗??【参考方案2】:

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

转换为字符串

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

【讨论】:

它适用于单个字典。如果有多个字典怎么办?我无法转换回字典。 @VineetAshtekar 看到这个问题的标题。问题是将 NSDictionary 转换为 NSString。 @DanialHussain 是的,我知道。所以?字典中可以有数组作为值吗?所以当它发生时,这个方法不起作用。【参考方案3】:

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

【讨论】:

description 方法提供了一些除了实际字典数据之外的额外信息。【参考方案4】:

如果你喜欢使用URLRequest httpBody

extension Dictionary 

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


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

【讨论】:

以上是关于将 NSDictionary 转换为 NSString的主要内容,如果未能解决你的问题,请参考以下文章

将 NSDictionary 转换为 Swift 字典

将 Json 转换为 NSDictionary

如何将 NSManagedObject 转换为 NSDictionary

将 NSDictionary 对象转换为 NSData 对象,反之亦然

如何将 NSDictionary 转换为 Dictionary?

如何将 NSString 转换为 NSDictionary?