微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将参数值传递给 Observable 对象

如何解决将参数值传递给 Observable 对象

我有一个 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 !!
    }
// ...

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。