首页 > 解决方案 > 新手:在结构中引用和初始化结构元素

问题描述

好的,这里是超级新手 Swift 学习者,我确信这是一个简单的问题,由于某种原因,我无法理解。

在下面的代码中,我创建了一个(非常)简单的地址簿结构,只是为了了解如何引用和初始化各种元素,尤其是结构中的结构。我做错了什么,有没有更好的方法来写这个?我收到错误(使用 Swift Playground)。

最后三行的错误:

实例成员 'page' 不能用于类型 'AddressBookStruct'
实例成员 'subscript' 不能用于类型 '[AddressPageStruct]'。

另外,当我设置var page = [AddressBookStrcut]我得到错误:

类型名称后的预期成员名称或构造函数调用

提前感谢您的理解推动。:)

struct AddressPageStruct {
    let firstName: String
    let lastName: String
    let cellPhone: Int

    init(f: String, l:String, c:Int) {
        firstName = f
        lastName = l
        cellPhone = c
    }
}

struct AddressBookStruct {
    let color: String
    let size: String
    var page = [AddressPageStruct]
}

var littleBlackBook = AddressBookStruct.self

littleBlackBook.init(color: "Black", size: "Little")

littleBlackBook.page[0].cellPhone = 6191234567
littleBlackBook.page[0].firstName = "Bob"
littleBlackBook.page[0].lastName = "Smith"

标签: arraysswiftstructureinitializing

解决方案


结构是值类型,请检查这个。 swift语言中的结构与类

你不能制作这个 littleBlackBook.page[0].cellPhone,因为 cellPhone 是常量,你使用 let,而不是使用构造函数,我也将页面更改为 AddressPageStruct 的空数组

import Cocoa

struct AddressPageStruct {
    let firstName: String
    let lastName: String
    let cellPhone: Int

    init(f: String, l:String, c:Int) {
        firstName = f
        lastName = l
        cellPhone = c
    }
}

struct AddressBookStruct {
    let color: String
    let size: String
    var page = [AddressPageStruct]()
}

var littleBlackBook = AddressBookStruct(color: "Black", size: "Little")

littleBlackBook.page.append(AddressPageStruct(f: "Bob", l: "Smith", c: 6191234567))
print(littleBlackBook.page)

推荐阅读