问题描述
我有一个 ObservableObject 类,用于从 api 获取数据。它需要一个参数,即 api 密钥。我正在尝试将该键从我的 ContentView 的参数传递给对象。
class UnsplashAPI: ObservableObject {
//some code
var clientId: String
init(clientId: String) {
self.clientId = clientId
}
//some more code
}
当我在结构中要求参数时,这很好用
struct ContentView: View {
@Observedobject var api = UnsplashAPI(clientId: "APIKEY")
var body: some View {
//View
}
}
然而这不是:
struct ContentView: View {
var clientId: String
@Observedobject var api = UnsplashAPI(clientId: self.clientId) // Cannot find 'self' in scope
init(clientId: String){
self.clientId = clientId
}
var body: some View {
//View
}
}
我认为我初始化结构错误,因为我收到错误“无法在范围内找到‘自我’”
解决方法
在 init
内初始化它
struct ContentView: View {
var clientId: String
@ObservedObject var api: UnsplashAPI
init(clientId: String){
self.clientId = clientId
self.api = UnsplashAPI(clientId: clientId) // << here !!
}
// ...