Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Objective-C中管理元组集合_Objective C_Cocoa_Collections_Tuples - Fatal编程技术网

在Objective-C中管理元组集合

在Objective-C中管理元组集合,objective-c,cocoa,collections,tuples,Objective C,Cocoa,Collections,Tuples,我对Objective-C相当陌生,想知道管理元组集合的最佳方法是什么。在C语言中,我会使用2D数组或结构 我应该创建包含这些元组的对象吗?仅仅对列表进行排序似乎有些过分,或者对象初始化没有产生真正的额外负载?我认为您必须满足于NSArray对象的NSArray,或者NSDictionary对象的NSArray。你可以随时滚动你自己的课程,或者按照你在C中的方式进行。有几种不同的方法可以实现这一点: CoreData。虽然从技术上讲,它不是一个数据库,但它的行为与数据库非常相似。如果在应用程序运

我对Objective-C相当陌生,想知道管理元组集合的最佳方法是什么。在C语言中,我会使用2D数组或结构


我应该创建包含这些元组的对象吗?仅仅对列表进行排序似乎有些过分,或者对象初始化没有产生真正的额外负载?

我认为您必须满足于NSArray对象的NSArray,或者NSDictionary对象的NSArray。你可以随时滚动你自己的课程,或者按照你在C中的方式进行。有几种不同的方法可以实现这一点:

  • CoreData。虽然从技术上讲,它不是一个数据库,但它的行为与数据库非常相似。如果在应用程序运行之间不需要持久性,那么考虑使用NSnMeMySturyType存储类型,而不是NSQLITestRoType或其他选项。但是,如果您想将元组连接在一起,使用CoreData绝对不起作用(依我看,这是CoreData不是数据库的主要原因)
  • 使用真实的数据库。SQLite在每台Mac和iPhone上都有发布,如果您使用像或这样的包装器,它非常容易使用
  • 元组实际上只是键值对的集合,因此您可以只使用NSMutableDictionary的NSMutableArray。显然,您无法使用SQL语法,任何连接/查询都必须自己运行,但这肯定是最简单的设置
  • 编写一个元组类并将其存储在NSMutableArray中(类似于#3,只是在元组上强制执行一组公共属性)

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

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

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


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

    为什么要使用数据库来创建元组?