如何将 NSSet 转换为 Swift 中的数据
How do I convert a NSSet to Data in Swift
我需要通过网络发送一个 NSSet,所以我需要将它转换为数据。
我试过这个:
let setData : Data = withUnsafeBytes(of: mySet) { Data([=11=]) }
没有成功。
转换为 NSData 很容易,但是数据呢?
我该怎么做?
要么使用 Codable 将其转换为通用序列化形式(JSON 或二进制 Plist)(如果它需要由另一个系统以可移植格式解析),要么使用 NSCoder 将其交给 NSKeyedArchiver (如果它只需要被 Cocoa 个应用程序读取,并且您想保存 "set-ness" 和任何对象关系)。
有关 NSKeyedArchiver 的详细信息在 Archives and Serializations Programming Guide.
有关 Codable 的详细信息在 Encoding, Decoding, and Serialization。
NSSet 不能直接 Codable,但这并不重要,因为 JSON 和 plist 无论如何都不支持集合。您可以将其转换为数组(或集合)。
既然你说转换成 NSData 很容易,也许你已经意识到了这一切,你只需要 Martin 的评论:添加 as Data
.
我需要通过网络发送一个 NSSet,所以我需要将它转换为数据。
我试过这个:
let setData : Data = withUnsafeBytes(of: mySet) { Data([=11=]) }
没有成功。
转换为 NSData 很容易,但是数据呢?
我该怎么做?
要么使用 Codable 将其转换为通用序列化形式(JSON 或二进制 Plist)(如果它需要由另一个系统以可移植格式解析),要么使用 NSCoder 将其交给 NSKeyedArchiver (如果它只需要被 Cocoa 个应用程序读取,并且您想保存 "set-ness" 和任何对象关系)。
有关 NSKeyedArchiver 的详细信息在 Archives and Serializations Programming Guide.
有关 Codable 的详细信息在 Encoding, Decoding, and Serialization。
NSSet 不能直接 Codable,但这并不重要,因为 JSON 和 plist 无论如何都不支持集合。您可以将其转换为数组(或集合)。
既然你说转换成 NSData 很容易,也许你已经意识到了这一切,你只需要 Martin 的评论:添加 as Data
.