是否有可能返回数组tuples作为AnyObject?或我将不得不封装tuple内的变量class,然后返回class?
目前的结构
public typealias Changes = (id:Int!, cors:Bool!)
struct ClientReturn{
var error: NSError?
var json: JSON?
var mutableReturn: AnyObject?
var pageResults: PageResults?
}
class func Changes(api_key: String!, startDate: String?, endDate:String?,
completion: (ClientReturn) -> ()) -> (){
//content
}
Client.Changes(api_key, startDate: nil, endDate: nil){
apiReturn in
var aReturn = apiReturn;
var changesArray = [Changes]()
for(var i = 0; i < apiReturn.json!["results"].count; i++ ){
let json = apiReturn.json!["results"]
changesArray.append((id: json[i]["id"].int, cors: json[i]["cors"].bool))
}
//aReturn.mutableReturn = changesArray as! Changes
aReturn.mutableReturn = changesArray //ERROR (Cannot assign value of type '[Changes]' to type 'AnyObject?')
completionHandler(aReturn)
}
Run Code Online (Sandbox Code Playgroud)
可以强制转换为AnyObject的是一个类(或者是一个桥接到某个类的Swift结构).
元组不是一个类.因此,它不能被强制转换为AnyObject.
同样的事情适用于阵列,但是通过更迂回的路线.数组不是类,但它与NSArray桥接.但是NSArray只能包含类,即AnyObject元素.因此,只能将AnyObject-castable数组转换为AnyObject.一个元组不是一个阶级...你从这里拿走它.
另一种看待它的方式是:AnyObject完全与Objective-C交换.但是元组是一个仅限Swift的特性:Objective-C对它们一无所知.因此,元组数组不能转换为AnyObject,因为它无法传递给Objective-C.
| 归档时间: |
|
| 查看次数: |
187 次 |
| 最近记录: |