Junkor

轻量级接口包装(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里声明这样的函数包装很简单,这样可以使我们应用程序的代码更简洁。尽管去用吧~