如何将 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.