目前,我的iPhone应用程序使用NSMutableArrays来保存NSStrings。我有更多信息要与每个数组中的每个条目相关联。例如,以前我只有一件事放在Array1 [0]中,一个字符串。但是,现在,我想要将另一个字符串和一个整数关联起来。我猜是这样的:
old:[string]
new [string,string,integer]
我在考虑使用字典,但我不确定它是否正确。有什么建议吗?
答案 0 :(得分:3)
NSArray
中的元素可以是词典,C structs
或Objective-C对象。
字典可以工作,但是如果你要存储原始数据类型值(需要装箱,例如NSNumber
),或者有可能在更深层次上扩展数据(包含包含另一个字典的字典),这可能很麻烦字典)。此外,不会隐式键入字典对象。
C struct
可以工作,但它也需要装箱,你不会从内存管理的Cocoa集合语义中受益 - 你必须自己做。此外,对copy/retain
成员的struct
语义没有隐式支持。
我通常为汇总数据类型声明一个Objective-C类,这些类型将存储在NSArray
等集合中。在你的情况下,像
@interface MyData : NSObject
@property (nonatomic, copy) NSString *firstString;
@property (nonatomic, copy) NSString *secondString;
@property (assign) NSInteger integer;
@end
答案 1 :(得分:2)
词典是键值对,所以它们不适合这里的法案。您可以使用包含数组的数组,也可以使用包含字符串和整数值的自定义类的数组。
答案 2 :(得分:1)
如果您只想要一个集合并且需要迭代该集合,则选择一个数组。
如果要通过条目索引以外的其他键查找内容,请选择“词典”。
当然,这一般都是一般性的,但你没有表明你需要使用词典的任何理由。
请记住,您可以创建一个包含两个字符串和一个整数的类,并将该类型的对象放入一个数组中。