我在这三个主题上的知识有点落后:NSMutableDictionary,NSEnumerator,NSMutableSet。当我想要使用它们时,感觉非常困难,即使我已经阅读了开发人员文档。
是否有任何示例代码可以清楚地理解这三个主题?
请帮帮我。
谢谢你马丹·莫汉。
发布于 2010-12-18 15:08:19
理解这些的最好方法取决于你以前的经验。NSDictionary就像它听起来那样:一本字典。这意味着,给定一个键(或词头,如字典中的),您可以查找一个值(或定义):
例如,这本字典给出了关于我的狗的信息:
KEY VALUE
-------------------------------------------
@"name" @"tucker"
@"species" @"canis lupus familiaris"
@"favorite" @"biscuits"有了包含该信息的字典dogInfo,我们就可以发送[dogInfo objectForKey:@"name"]并期望接收@"tucker"。
NSDictionary和NSMutableDictionary的不同之处在于后者允许在初始化后进行更改。这让你可以做像[dogInfo setObject:@"fetch" forKey:@"game"]这样的事情。这对维护状态、记录引用透明的请求等很有帮助。
NSSet是一种拥有一组对象的方法,但有几个重要的方面:这些对象没有定义的顺序,每个对象只能有一个(没有重复的)。当需要包含唯一的、无序的对象时,可以使用NSSet。NSMutableSet是NSSet的变体,它允许在初始化后进行更改(例如添加或删除对象)。
NSEnumerator稍微复杂一些,但通常不需要处理它,除非您正在编写自己的库,正在进行过时的编码,或者正在进行复杂的枚举。集合类(如NSDictionary、NSArray和NSSet )使用NSEnumerator的子类来枚举其对象。通常,您只需使用foreach-loop枚举它们,因为它们都实现了<NSFastEnumeration>。但有时,您可能想要做更具体的事情,比如枚举字典的对象(而不是键),或者反向枚举数组。这就是NSEnumerator实例(通常定义为集合对象上的属性)的用武之地。
更新
Justin在评论中指出,NSEnumerator符合<NSFastEnumeration>;这意味着,您几乎不需要知道如何使用NSEnumerator;您可以在枚举器本身上执行foreach循环,如下所示:
for (id object in [dogDict objectEnumerator]) {
// doing something with the object, disregarding its key
}https://stackoverflow.com/questions/4477017
复制相似问题