2017-02-11 24 views
2
struct Bag { 
    let name: String 
    let wallets:[Wallet] 

    mutating func addWallet(wallet: Wallet){ 
     wallets.append(wallet) 
    } 
} 

struct Wallet { 
    let name: String 
    let cards:[Card] 

    mutating func addCard(card: card){ 
     cards.append(card) 
    } 

} 

struct Card { 
    let name: String 
    let number: String 
} 

class Manager{ 
    // it can add , remove and keep track of Bags 
} 

Я узнаю о создании моей собственной модели данных.как правильно записать модель данных с вложенными типами или использовать CoreData в Swift

Это упрощенная версия модели данных моего приложения, в которую можно положить много кошельков в сумку, и многие кредитные карты можно положить в кошелек.

Вопрос 1. У меня есть класс менеджера, который добавляет, удаляет и получает вещи из моей Сумки. Должен ли я иметь еще 2 класса, чтобы сделать то же самое для моей структуры Кошелька и Карты? Или иметь мутирующую функцию внутри struct..and, возможно, добавлено в getFunction внутри этих структур.

Вопрос 2. Есть ли лучший способ смоделировать это, это похоже на большой беспорядок.

Вопрос 3. В моих предыдущих Приложениях у меня было бы просто 3 простые структуры и иметь отношения в coreData и просто позволить CoreData обрабатывать все. может ли CoreData использоваться для построения модели данных или ее необходимо разделить?

Каков наилучший способ сделать это так, чтобы он был более читаемым и его легче понять и сохранить в будущем?

ответ

0

Почему не только упростить все структуры, чтобы сделать детали, которые вы хотите изменить ВАР, вы должны сделать это в любом случае для методов мутируют работать - но свалка методы мутирует:

struct Bag { 
    let name: String 
    var wallets:[Wallet] 
} 

struct Wallet { 
    let name: String 
    var cards:[Card] 
} 

struct Card { 
    let name: String 
    let number: String 
} 

Тогда, почему даже есть класс менеджера для чего-нибудь? Структура, что возможно уже определено структурами, и добавить новую карту в кошельке уже очень просто:

myWallet1.cards.append(myCard2) 

Я не совсем уверен, что вы пытаетесь задать вопрос с 3 - Я думаю, вы пытались спросить, можете ли вы использовать CoreData для определения модели данных, которую вы можете использовать без базы данных? Вы не можете создавать управляемые объекты без координатора контекста/постоянного хранилища. У вас может быть базовая модель данных, которая находится в памяти. Это, вероятно, лучше спросить как отдельный вопрос.