【问题标题】:What is the correct way to setup a Model for IOS?为 IOS 设置模型的正确方法是什么?
【发布时间】:2013-09-06 22:14:56
【问题描述】:

我正在创建一个应用程序并使用 Parse.com 进行数据存储。

我想为我使用的 Parse 的所有不同方面使用一个模型。例如,如果我存储一些游戏数据,我想要一个模型来处理对 Parse 上保存的游戏模型的任何查找/更新/条目。

所以我想要一个模型来处理所有这些方法,而不是将它们添加到视图控制器中。

设置这些的最佳/正确方法是什么?我听说过单例,但不确定它们在这里是否正确。

目前,我使用 NSObject 的子类来设置这些。然后我将所有方法创建为类方法(没有实例方法,因为没有要创建的实例)。然后我照常调用任何类方法。

[GameModel classMethodName];

这是正确的吗?有没有更好的方法或这种方法有什么问题?

【问题讨论】:

    标签: ios objective-c model-view-controller ios6 model


    【解决方案1】:

    目前,我使用 NSObject 的子类来设置这些。然后我创建 所有方法都作为类方法(没有实例方法,因为没有 要创建的实例)。然后我照常调用任何类方法。

    这听起来不是一个很好的计划。模型的工作是管理应用程序操作的数据。这意味着您的模型应该有数据要存储,这意味着您应该实例化您的模型。

    为您的后端基础架构(在您的情况下为 Parse)构建支持是一个好主意。把它放在那里比把它放在你的视图控制器中要好得多。但是,例如,支持代码在哪里存储游戏状态或玩家的历史记录?它应该将其存储在模型对象中。

    如果没有深入了解整个单例好与单例坏的蠕虫罐(您应该谷歌一下),听起来您使用类方法的原因与人们经常使用单例的原因大致相同:易于访问。实例化你的类并使用实例方法而不是类方法意味着你必须找到一种方法来与那些需要它的对象共享模型,这比仅仅使用全局可访问的类方法更有效。不过,完成这项工作将有助于获得更好的应用程序。

    例如,您可以限制每个视图控制器仅访问它需要的模型部分。玩游戏视图控制器可能只能看到当前的游戏板,而高分视图控制器只能看到玩家的历史。这消除了许多可能的错误 - 您永远不必怀疑游戏板视图控制器是否会导致玩家历史记录出现问题,因为它永远不会看到模型的那部分。

    【讨论】:

    • 感谢您的出色回答。目前我为每个 Parse 模型创建一个模型(如上所述)。所以我会创建一个游戏模型和玩家模型,例如得分模型。然后我会在每个模型中都有类方法。这样我就可以只包含相关模型并且只能访问我需要的方法。那会是正确的吗?还是您认为我应该将每个模型实际创建为真实模型并具有实例。那么创建一个 PFObject 的子类,init 将是 Parse 对象等的创建?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-17
    • 2019-06-15
    • 2012-02-19
    • 2019-04-09
    相关资源
    最近更新 更多