【问题标题】:how to write data model properly with nested types properly or use CoreData in Swift如何使用嵌套类型正确编写数据模型或在 Swift 中使用 CoreData
【发布时间】:2017-02-11 17:36:40
【问题描述】:
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
}

我正在学习如何创建自己的数据模型。

这是我App的数据模型的简化版,一个Bag可以放很多钱包,一个钱包可以放很多信用卡。

问题 1. 我有一个 Manager 类来添加、删除和从我的 Bag 中获取东西,我是否应该再有 2 个类来为我的 Wallet 和 Card 结构做同样的事情?或者在 struct.. 内部有变异函数,并且可能在这些 structs 内部的 getFunction 中添加

问题 2。有没有更好的方法来模拟这个,看起来很乱。

问题 3。在我以前的应用程序中,我将只有 3 个简单的结构,并在 coreData 中有关系,然后让 CoreData 处理所有事情。 CoreData可以用来建数据模型还是需要分离?

这样做的最佳方法是什么,这样更具可读性 并且以后更容易理解和维护?

【问题讨论】:

    标签: arrays swift core-data struct data-modeling


    【解决方案1】:

    为什么不只是简化所有结构来制作您想要修改 vars 的部分,无论如何您都必须这样做才能使变异方法起作用 - 但转储变异方法:

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

    那么,为什么还要有一个 Manager 类呢?可能的结构已经由结构定义,向钱包添加新卡已经非常简单:

    myWallet1.cards.append(myCard2)
    

    我不太确定您在问题 3 中要问什么 - 我想您是在问是否可以使用 CoreData 来定义可以在没有数据库的情况下使用的数据模型?如果没有上下文/持久存储协调器,您将无法创建托管对象。您可以拥有一个全部在内存中的核心数据模型。这可能最好作为一个单独的问题提出。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-25
      • 2016-09-13
      • 1970-01-01
      • 2021-10-09
      • 2020-03-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多