我在Swift 2.0中编写了一个带有扩展的小协议,似乎可以在Playground中运行.这似乎有点太容易了.
这里有什么东西我不见了吗?
以下代码可以在Xcode 7 Beta 5的 *** 场上运行.
//: Playground - noun: a place where people can play import UIKitprotocol Serializable { init?(encodedData: NSData) var encodedData: NSData { get }}extension Serializable { var encodedData: NSData { var pointer = self return NSData(bytes: &pointer,length: sizeof(Self.self)) } init?(encodedData data: NSData) { guard data.length == sizeof(Self.self) else { return nil } self = UnsafePointer(data.bytes).memory }}struct Test: customstringconvertible,Serializable { let message: String let people: [String] let color: UIcolor var description: String { return "\(message) + \(people) + \(color)" }}let structToEncode = Test(message: "Hi!",people: ["me","someone else"],color: UIcolor(red: 0.5,green: 0.2,blue: 0.1,Alpha: 0.4))let encodedData = structToEncode.encodedDatalet decodedStruct = Test(encodedData: encodedData)解决方法 我一直在寻找Swift的序列化解决方案.不要发明自己的协议,而是看看RawRepresentable.它比你在这里做的更通用,因为它不依赖于NSData.只要您的类型在RawValue类型别名中指定它,您就可以序列化为任何内容. 总结
以上是内存溢出为你收集整理的ios – 在Swift中将结构序列化为NSData全部内容,希望文章能够帮你解决ios – 在Swift中将结构序列化为NSData所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)