我想通过performSegueWithIdentifier(self.segueName, sender: products)
我想在sender
prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
参数中接收数组
但是,这不会编译:{{1}}
为什么我要这样做?只是因为我想避免在我的Controller类中为此目的添加一个全局变量。
我怎样才能做到这一点?
我试图事先将数组转换为Cannot convert value of type '[Product]' to expected argument type 'AnyObject?'
。此解决方案会进行编译,但AnyObject
函数中sender
参数中的结果值包含prapareForSegue
。
nil
答案 0 :(得分:2)
直接来自Swift编程语言参考:
作为? downcast运算符的版本返回协议类型的可选值,如果实例不符合该协议,则此值为nil。
因此,如果您获得的值为nil,则表示[Product]
不符合预期的AnyObject?
协议,因为[Product]
是一个数组(请参阅此处:{{3} })。
你可以做的是NSArray的类型[Product]
,因为那是一个符合AnyObject的对象?
self.performSegueWithIdentifier(self.segueName, sender: (products as NSArray) as? AnyObject)
在此处查看更多信息:Structures as AnyObject。
让我知道它是怎么回事!祝你好运!
答案 1 :(得分:0)
真正的问题是我已将我的Product实体声明为结构而不是类。这样就无法将数组作为AnyObject处理。
使用某个类允许我将var err = function err(jqxhr, textStatus, errorThrown) {
console.log(errorThrown)
}
$.ajax({
url: "dofirstthing.do",
jsonp: false,
type: "GET",
dataType: "JSON",
statusCode: {
200: function() {
global.location.search = param1;
$.get("/url?" + "param1=" + global.location.search)
.then(function() {
$.get("/url?" + "param2=" + param2).then(null, err)
}, err)
}
}
});
传递给[Product]
而不进行任何类型转换,并使用performSegueWithIdentifier