2015-06-01 3 views
0

У меня есть массив книг. Книги имеют название и персонажи. Персонажи имеют имя и возраст. И книги, и характер - это структуры.Работа с массивом в массиве - Swift

Когда мой App запускает набор стандартных книг создается (пользователь будет также добавить свои собственные позже

вот мой основной код:.
(Примечание: ???? является заполнителем для код, который я не могу решить.)

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]]) 

Но я Conce что обработка двух отдельных массивов станет слишком сложной в большом списке книг, не говоря уже о созданных пользователем книгах.

Как бы я лучше справился с этим?

+0

Вы должны выбрать другое название для своей структуры. Персонаж –

+0

На ваш вопрос? Ваш код выглядит хорошо для меня, и похоже, что он должен работать. – Schemetrical

ответ

0

Ваш вопрос немного неясен, но вот как я это сделаю.

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, вы должны изменить название своей структуры символов на что-то еще, например, BookCharacter, чтобы избежать путаницы между char и Character в вашей треске е.

Смежные вопросы