在Swift结构中设置值后获得nil

时间:2018-03-22 16:58:18

标签: swift

我不确定但在结构I中设置一个值后,在尝试读取变量时得到nil:

struct MainStruct : Decodable{
    var array : [InternalArray]?
}

struct InternalArray : Decodable{
    var firstName : String?
    var lastName : String?
    var Number : Int?
}



var testing: MainStruct?

testing?.array![0].firstName = "TEST"

print("test value \(testing?.array![0].firstName!)")

打印 nil

3 个答案:

答案 0 :(得分:5)

首先,你使用了太多的选项。

三个(!)问题:

  1. Testing未初始化。
  2. InternalArray未初始化。
  3. 如果给定索引处没有项目(导致异常),则无法访问具有索引订阅的数组。
  4. struct MainStruct : Decodable {
        var array = [InternalArray]()
    }
    
    struct InternalArray : Decodable {
        var firstName : String?
        var lastName : String?
        var Number : Int?
    }
    
    var testing = MainStruct()
    testing.array.append(InternalArray())
    testing.array[0].firstName = "TEST"
    
    print("test value \(testing.array[0].firstName!)")
    

答案 1 :(得分:4)

您尚未初步测试。

答案 2 :(得分:0)

这应该有效

var testing: MainStruct? = MainStruct()
testing?.array = []
testing?.array!.append(InternalArray())
testing?.array![0].firstName = "TEST"