轻量级接口包装(Lightweight API Wrappers)
轻量级接口包装(Lightweight API Wrappers)
文章翻译自objc,原文连接:『Lightweight API Wrappers』
Objective-C 的API与我们写的swift代码相比,缺少很多类型安全机制。例如Foundation的JSON序列化接口+JSONObjectWithData:options:error:。这个类函数返回一个AnyObject?类型的对象。正如我们所知,其实我们经常希望得到的是一个dictionary,所以我们通过下边的包装函数,让事情变得更简单:
typealias JSONDictionary = [String:AnyObject]
func decodeJSON(data: NSData) -> JSONDictionary? {
return NSJSONSerialization.JSONObjectWithData(data, options: .allZeros, error: nil) as? JSONDictionary
}
这样当我们每次调用这个函数时就省去了optinal与dictionary的转换。并且希望返回的dictionary也是在函数定义里显示声明的。
当然你可以为JSON的encoding也做同样的包装:
func encodeJSON(input: JSONDictionary) -> NSData? {
return NSJSONSerialization.dataWithJSONObject(input, options: .allZeros, error: nil)
}
我们还可以更进一步,返回一个包含错误信息的[result]数值而不是简单的dictionary。
最后:Swift里声明这样的函数包装很简单,这样可以使我们应用程序的代码更简洁。尽管去用吧~