将一个元组数组作为AnyObject返回?

kye*_*kye 1 tuples swift

是否有可能返回数组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)

mat*_*att 6

可以强制转换为AnyObject的是一个类(或者是一个桥接到某个类的Swift结构).

元组不是一个类.因此,它不能被强制转换为AnyObject.

同样的事情适用于阵列,但是通过更迂回的路线.数组不是类,但它与NSArray桥接.但是NSArray只能包含类,即AnyObject元素.因此,只能将AnyObject-castable数组转换为AnyObject.一个元组不是一个阶级...你从这里拿走它.


另一种看待它的方式是:AnyObject完全与Objective-C交换.但是元组是一个仅限Swift的特性:Objective-C对它们一无所知.因此,元组数组不能转换为AnyObject,因为它无法传递给Objective-C.