【问题标题】:Cannot use instance member 'idnum' within property initializer;不能在属性初始化器中使用实例成员“idnum”;
【发布时间】:2021-04-15 17:45:17
【问题描述】:

我正在尝试使用实例变量但遇到了一些问题,这个movieDetail是navigationlink的目的地,idnum是从那里得到的。

struct movieDetail: View {
    
    var idnum:Int
    var mvde = testMv(idStr: String(idnum))
     var body: some View {
        
        ScrollView{
            
            VStack{
                ForEach(mvde.todos){info in
                    Text(info.overview)
                    
                }
                }
        }
        .padding(.horizontal)
         
                    }
       
    }
}

struct movieDetail_Previews: PreviewProvider {
    static var previews: some View {
        NavigationView{
            movieDetail(idnum:24428)
        }
       
    }
}

在这个movieDetail视图中,我想使用idnum作为参数来创建一个testMv对象,同时我得到了信息:Cannot use instance member 'idnum' within property initializer; property initializers run before 'self' is available,我试图将var mvde = testMv(idStr: String(idnum))放入body部分但得到Variable 'mvde' was never mutated; consider changing to 'let' constant.

【问题讨论】:

  • 您需要创建自己的自定义初始化程序,而不是使用合成的初始化程序。同样按照惯例,结构应该有大写字母,所以应该是MovieDetail

标签: swift swiftui


【解决方案1】:

可以如下实现

struct movieDetail: View {
    
    var idnum:Int
    var mvde: testMv

    init(idnum: Int) {
        self.idnum = idnum
        self.mvde = testMv(idStr: String(idnum))
    }

   ...
}

【讨论】:

    猜你喜欢
    • 2018-01-07
    • 1970-01-01
    • 2017-04-04
    • 2020-06-18
    • 2020-10-24
    • 2019-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多