如何在迅速
问题描述:
我迅速 新得到闭合的数据,我写了简单的API连接器从服务器获取信息,但我不知道如何从服务器获取我的数据和应用程序中使用它如何在迅速
var account: DriverAccount = DriverAccount()
ApiConnectController.instance().makeAPICall(url: driverAuthUrlEndpoint,
params:paramsDictionary,
withAutorization: false,
method: .POST,
success: { (data, response, error, json) in
self.account = try! DriverAccount(json: json!) // Error Closure cannot implicitly capture a mutating self parameter
print("OK")
},
failure: { (data, response, error, json) in
print("NOT")
})
如何将数据导入self.account?
class DriverAccount {
var callSign: String?
var dispPhone: String?
var isLoggedin:Bool
init() {
self.callSign = ""
self.dispPhone = ""
self.isLoggedin = false
}
init(isLoggedIn logedIn: Bool, withCallSign callsign: String, andDispPhone dispPhone: String) {
self.callSign = callsign
self.dispPhone = dispPhone
self.isLoggedin = logedIn
}
}
答
我想,你的DriverAccount是一个结构。结构是价值。所以,值被复制以便在闭包中重用,self.account是闭包中的一个let值。如果你想在闭包中改变局部变量,使用class。 而且,如果仅仅使用自己,你可以生产保留物。 - 使用([weak self])避免它。 https://stackoverflow.com/a/26598603/5769826
+0
是的,它是一个结构,将其更改为类,添加入职。但关闭不能隐式捕获一个变异的自我参数错误在同一个地方( – Karmadon
您的错误是由于驱动程序帐户是一个结构。你已经在关闭之前初始化它。也许你可以更改驱动程序帐户,让它有一种方法来填充它自己而不是重新启动它。所以你可以做self.account.fill(使用:Json) –
是的,它是一个结构体,将其更改为类“代码”类DriverAccount {0} {0} var callSign:String? var dispPhone:String? VAR isLoggedin:BOOL 的init(){ self.callSign = “” self.dispPhone = “” self.isLoggedin =假 } 的init(isLoggedIn logedIn:BOOL,withCallSign呼号:字符串,andDispPhone dispPhone:字符串){ self.callSign =呼号 self.dispPhone = dispPhone self.isLoggedin = logedIn } }'code'但什么都没有改变(( – Karmadon