【问题标题】:Models with refference to another models - saving using NSCoding参考另一个模型的模型 - 使用 NSCoding 保存
【发布时间】:2018-02-10 20:07:10
【问题描述】:

我正在创建某种游戏跟踪器,并想问这种设计是否是错误的选择。

我正在使用 MVC 架构,并且在我的模型中我引用了其他模型,即在 Player 模型中我有

var name: String
var lastTimePlayed: Date?
var timesPlayed: Int
let playerID: String
var gamesPlayed = [Game]()
var matchesPlayed = [Game: [Match]]()
var gamesPlace = [Game: [Int]]()
var gamesPoints = [Game: [Int]]()

这是它的外观和图像:

Graph of all models used.

箭头表示模型保持对另一个模型的引用。

只保存 gameID 和 matchID 或 gameName 而不是对 Game 和 Match 模型的引用会更好吗?保留直接引用对我来说更容易,因此我可以访问最后一场比赛的日期等,但我也可以通过其他方式进行。

当然,当我删除模型时,我会处理所有这些引用并将它们也删除,因此不会出现内存泄漏。

我的第二个问题是 - 当我尝试使用 NSCoding(在商店使用 NSKeyedArchiver.archiveRootObject)保存那些时我会遇到问题吗?它不会像循环一样从 Player 到 Game 到 Match 再到 Player 吗?

感谢您的帮助!

【问题讨论】:

    标签: swift models nscoding


    【解决方案1】:

    NSCoder 子类知道如何避免循环引用,请参阅https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/Archiving/Articles/archives.html。

    也就是说,您可能应该考虑将 weak 引用引入您的数据模型以避免保留周期。

    【讨论】:

      猜你喜欢
      • 2018-11-08
      • 2015-01-14
      • 2021-03-27
      • 2020-05-18
      • 1970-01-01
      • 2014-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多