使用数组中的数组 - Swift

Working with an array within an array - Swift

我有很多书。 书籍有标题和字符。 角色有名字和年龄。 Book 和 Character 都是结构体。

当我的应用程序启动时,会创建一组默认图书(用户稍后也会添加自己的图书。

这是我的基本代码:
(注意:???? 是我无法解决的代码的占位符。)

struct Character {
    var name: String
    var age: Int
}

struct Book {
    var title: String
    var characters: [Character]
}

var books: [Book] = []

func createBooks() {
    books.append(Book(title: "My Book1", characters: ????)

}

我知道我可以创建一个字符数组并用

赋值
books.append(Book(title: "My Book1", characters: [character[0], character[3]])

但我担心在大量书籍中处理两个单独的数组会变得太困难,更不用说用户创建的书籍了。

我该如何最好地处理这个问题?

你的问题有点不清楚,但我会这样做。

struct Character {
    var name: String
    var age: Int
}

struct Book {
    var title: String
    var characters: [Character]
}

var books: [Book] = []

func createBooks() {
    let character1 = Character(name: "John", age: 24)
    let character2 = Character(name: "Sarah", age: 18)
    books.append(Book(title: "My Book1", characters: [character1, character2]))
}

这样你就有了一个定义良好的结构,然后你可以像这样循环你的书:

for book in books {
    // Do something with book
}

你可以像这样遍历每本书的所有字符:

for book in books {
    for character in book.characters {
        // Do something with character
    }
}

我也非常同意 Leo Dabus 的评论,您应该将 Character 结构的名称更改为其他名称,例如 BookCharacter,以避免代码中的 char 和 Character 混淆。