ios - 我应该使用什么收集类?

标签 ios objective-c cocoa-touch

目前,我的iPhone应用程序使用NSMutableArrays来保存NSStrings。我有更多信息想与每个数组中的每个条目相关联。例如,以前我只有一件事要放入字符串Array1 [0]。但是,现在,我想将字符串与另一个字符串和一个整数相关联。我猜是这样的:

旧:[字串]

新的[字符串,字符串,整数]

我当时正在考虑使用字典,但我不确定这是否正确。有什么建议吗?

最佳答案

NSArray中的元素可以是字典,C structs或Objective-C对象。

字典可以使用,但是如果您要存储原始数据类型值(需要装箱,例如NSNumber),或者有可能将数据扩展到更深的层次(字典中包含另一个字典的字典),那么字典可能会很麻烦。同样,字典对象也不是隐式键入的。

C struct可以工作,但也需要装箱,并且就内存管理而言,您无法从Cocoa集合语义中受益,您必须自己做。另外,对于copy/retain成员,不暗含对struct语义的支持。

我通常为要存储在诸如NSArray之类的集合中的聚合数据类型声明一个Objective-C类。就您而言,类似

@interface MyData : NSObject
@property (nonatomic, copy) NSString *firstString;
@property (nonatomic, copy) NSString *secondString;
@property (assign) NSInteger integer;
@end

关于ios - 我应该使用什么收集类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5629294/

相关文章:

ios - WidgetKit WidgetKit 的自定义意图中的 "Prompt Label"

iphone - 动态加载分组 TableView

ios - 滑动删除将 UITableViewCell 移至左侧

iphone - 即使我设置了内容大小,UIScrollView 也不会滚动

ios - 为什么 UIImageView 不会更改为已设置一次的不同图像?

iOS - 将 NSDictionary 复制到 SQLite3

ios - 将资源 plist 文件复制到应用程序支持文件夹?

ios - 如何知道 UITableView 中的一行是否已被选中?

android - 使用 Bazel 和 j2objc 在 iOS 和 Android 之间共享代码

ios - objective c TableView cell Detail ViewController