我是iPhone编码的新手,我正试图通过PrepareForSegue将结构传递给我的第二个VC。
在我的主视图控制器中,我有以下struct
struct AccountStruct {
var account: String
var balance: Double
var objectId: String
}
var accountsFromStruct : [AccountStruct] = []
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
accountsFromStruct.append(AccountStruct(account: "Checking", balance: 451.455, objectId: "12354785"))
accountsFromStruct.append(AccountStruct(account: "Savings", balance: 871.455, objectId: "123dfdf5"))
let SecondVC = segue.destinationViewController as! PresentedViewController
SecondVC.passedAccountStruct = accountsFromStruct
}
然后在我的第二个VC中,我有以下代码来设置var来保存传递的struct var passedAccountStruct:[PassedAccountStruct] = []
我得到的错误是 "无法转换类型的值' ViewController.AccountStruct'预期参数类型' PresentedViewController.PassedAccountStruct'"
答案 0 :(得分:1)
您在PassedAccountStruct
和ViewController
中复制了PresentedViewController
。所以有两种不同的PassedAccountStruct
。请保留一个。例如,您保留ViewController
一个,您可以在其他视图控制器中通过ViewController.AccountStruct
访问它。
答案 1 :(得分:1)
您的传递的帐号在您的第二个ViewController
中应该是这样的:
var passedAccountStruct = [AccountStruct]()
答案 2 :(得分:0)
该消息非常自我解释
"无法转换类型' ViewController.AccountStruct'的值至 预期参数类型' PresentedViewController.PassedAccountStruct'"
passedAccountStruct的类型不是AccountStruct数组,请验证两个数据的类型。
答案 3 :(得分:0)
通过思考您的程序快速传递结构。 取决于你想要做什么。
解决问题的一种方法是将结构中的变量类型更改为“static”
struct AccountStruct {
static var account: String
static var balance: Double
static var objectId: String
static var accountsFromStruct : [AccountStruct] = []
}
然后,从项目中的任何文件中,您只需访问该数组:
AccountStruct.accountsFromStruct[index]
现在,可能有其他方法可以更好地适用于您的情况。
尝试查看Access Control