gpt4 book ai didi

ios - 当其中一个值是 NSData 时,如何使用 NSJSONSerialization 存储序列化 NSDictionary?

转载 作者:搜寻专家 更新时间:2023-11-01 07:22:36 30 4
gpt4 key购买 nike

以这个简化的例子为例:

let dict: [String: AnyObject] = ["foo": ("bar" as NSString).dataUsingEncoding(NSUTF8StringEncoding)!9]

let json = try! NSJSONSerialization.dataWithJSONObject(dict, options: [])

我无法让它运行,它崩溃了:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Invalid type in JSON write (NSConcreteMutableData)'

我需要向我的服务器发送一个 JSON block ,其中一些值是字符串,一些是 NSData。我做错了什么?

最佳答案

值得您花时间通读 JSON RFC .注意:

JSON can represent four primitive types (strings, numbers, booleans, and null) and two structured types (objects and arrays).

JSON 不能表示原始数据,因此您需要将 NSData 转换为其中一种其他类型(通常是字符串)。一种常见的方法是:

let stringFromData = NSString(data: data, encoding: NSUTF8StringEncoding)

只需确保您和您的服务器就您将使用的编码达成一致。

如果你有很多这些,你可以通过你的字典映射并一次转换它们。根据您的结构,有几种可能的实现方式;这是一种方法:

let dictWithString = dict.map { (key, value) -> (String, NSObject) in
if let value = value as? NSData {
return (key, NSString(data: value, encoding: NSUTF8StringEncoding)!)
}

return (key, value)
}

关于ios - 当其中一个值是 NSData 时,如何使用 NSJSONSerialization 存储序列化 NSDictionary?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37978679/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com