【问题标题】:Managing collections of tuples in Objective-C在 Objective-C 中管理元组的集合
【发布时间】:2009-07-21 10:08:41
【问题描述】:

我是 Objective-C 的新手,想知道管理元组集合的最佳方法是什么。在 C 语言中,我会使用二维数组或结构。

我应该创建包含这些元组的对象吗?仅对列表进行排序似乎有点过头了,还是对象初始化不会产生真正的额外负载?

【问题讨论】:

    标签: objective-c cocoa collections tuples


    【解决方案1】:

    对象的生成肯定有一些开销。对于少量的对象,那么使用 ObjC 数据结构仍然是合适的。如果您有大量元组,我会在 C 结构数组中管理它们。请记住,Objective-C 实际上只是 C。在 Objective-C 中使用 C 结构是适当且常见的(在一定程度上;了解这一点是成为优秀 Objective-C 开发人员的一个重要里程碑)。

    通常,对于这种数据结构,我可能会创建一个管理整个集合的 Objective-C 对象。因此,外部调用者会看到一个 Objective-C 接口,但内部数据将存储在更高效的 C 结构中。

    如果快速访问大量元组很常见,我的集合对象可能会提供类似于[NSArray getObjects:range:] 的“get”方法。以“get”开头的 ObjC 方法表示第一个参数是一个将被该方法覆盖的指针。这通常用于对 ObjC 对象管理的事物进行高性能的类 C 访问。

    这种数据结构正是 ObjC 开发人员将 ObjC 的优雅和可维护性与 C 的性能和简单性相结合的方式。

    【讨论】:

      【解决方案2】:

      我认为您必须满足于 NSArray 对象的 NSArray ,或者 NSDictionary 对象的 NSArray 。您始终可以创建自己的课程,或者按照您在 C 中的方式进行。

      【讨论】:

        【解决方案3】:

        有几种不同的方法可以解决这个问题:

        1. 核心数据。虽然它在技术上不是一个数据库,但它的行为很像一个数据库。如果您不需要应用程序运行之间的持久性,则考虑使用 NSInMemoryStoreType 存储类型,而不是 NSSQLiteStoreType 或其他选项。但是,如果您想将元组连接在一起,则使用 CoreData 绝对行不通(IMO,这是 CoreData 不是数据库的主要原因) .
        2. 使用真实数据库。 SQLite 在每台 Mac 和 iPhone 上都提供,如果您使用 FMDBSQLite Persistent ObjectsPLDatabaseEGODatabaseGTMSQLite wrapper by Google 之类的包装器,它非常易于使用。
        3. 元组实际上只是键值对的集合,因此您可以只使用 NSMutableDictionaries 的 NSMutableArray。您显然不会使用 SQL 语法,并且您必须自己运行任何连接/查询,但这肯定是最简单的设置。
        4. 编写一个元组类并将其存储在 NSMutableArray 中(类似于 #3,只是在您的元组上强制执行一组通用属性)。

        【讨论】:

        • 为什么要使用数据库来拥有元组?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-08-08
        • 1970-01-01
        • 2011-09-28
        • 2011-06-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多