【问题标题】:I cant define an array containing an object typed values ?我无法定义包含对象类型值的数组?
【发布时间】:2017-08-25 07:33:50
【问题描述】:

我有一个名为Challenges 的类,其定义如下:

class Challenges {

    var title : String?
    var description : String?
    var points : Int?
    var status : String?
    var img :String?

    init (title : String ,description : String , point : Int , status : String , img : String){

        self.title = title
        self.description = description
        self.points = point
        self.status = status
        self.img = img
    }
}

然后我正在尝试创建它的一个实例:

 var test = Challenges(title: "indoor", description: "hard", point: 123 , status: "Done", img: "img.com")

然后我想将实例放入一个数组中:

var holdChallenges : [Challenges] = [test]

然后我收到以下错误: Cannot use instance member 'bounds' within property initializer; property initializers run before 'self' is available

所以我把它改成:

lazy var holdChallenges : [Challenges] = [self.test]

然后我收到以下错误:

NSObject类型的值没有值成员test

【问题讨论】:

  • 在哪里你定义testholdChallenges变量?
  • 您的代码中也没有“实例成员'边界'”。请展示一个真实的独立示例来说明问题。
  • 当初始化程序需要非可选值时,为什么你的属性是可选的?由于这些是将要使用的值,因此为参数设置可选类型似乎毫无意义。

标签: ios arrays swift class object


【解决方案1】:

Anwer 在那里 属性初始化程序在 'self' 可用之前运行 所以你做出了错误的声明

因为您在初始化过程中试图用另一个属性(变量)初始化。此时变量尚不可用。

所以你可以这样做

 var test = Challenges(title: "indoor", description: "hard", point: 123 , status: "Done", img: "img.com")

    // one way

    var holdChallen :[Challenges ] = [Challenges(title: "indoor", description: "hard", point: 123 , status: "Done", img: "img.com")]

    // second way

    var holdChallenges : [Challenges] {

        return [test]
    }

【讨论】:

    【解决方案2】:

    你可以像这样通过computed property返回[test]

    var holdChallenges: [Challenges] {
        return test
    }
    

    或者通过lazy属性:

    lazy var lazyHoldChallenges: [Challenges] = {
        return [self.test]
    }()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-05
      • 2021-08-15
      • 2013-02-14
      • 1970-01-01
      • 2018-07-20
      • 1970-01-01
      • 2018-08-09
      • 1970-01-01
      相关资源
      最近更新 更多