【发布时间】:2013-05-07 20:12:11
【问题描述】:
我有一个 NSMutableDictionary 网站
[dictionaryOfSites setObject:@"http://www.example.com" forKey:@"Example.com"];
[dictionaryOfSites setObject:@"http://www.site1.com" forKey:@"Site1"];
[dictionaryOfSites setObject:@"http://www.apple.com" forKey:@"Apple"];
我知道你不能对字典进行排序。但是我读到其他人使用了 NSMutableArray 作为键,并且可以对数组进行排序。
所以如果我设置一个新数组
[[arrayKey alloc] initWithObjects:@"Example.com", @"Site1", @"Apple", nil];
然后我会将我的第一个 sn-p 修改为
[dictionaryOfSites setObject:@"http://www.example.com" forKey:[arrayForKey objectAtIndex:0]];
[dictionaryOfSites setObject:@"http://www.site1.com" forKey:[arrayForKey objectAtIndex:1]];
[dictionaryOfSites setObject:@"http://www.apple.com" forKey:[arrayForKey objectAtIndex:2]];
在这个简单的问题中,我有 3 个站点,所以我对其进行了“硬”编码。如果我的网站列表是 100,我将如何做同样的事情?如何维护站点的顺序?
如果我对数组进行排序 [arrayKey sortUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
索引 2 不会变成索引 0 吗?如果它变为索引 0,那么您可以看到 dictionaryOfSites 带有错误的 URL 标签。
【问题讨论】:
-
最好的方法是创建一个代表您的站点的自定义类,并包括两个属性:名称和 URL 例如。然后创建该类的一个实例,设置两个属性,并将其放入一个数组中。然后,您可以根据对象的 name 属性对数组进行排序。
-
发表您的评论作为解决方案,以便您获得荣誉。你能告诉我你所指的例子吗?我对此感到非常困惑
-
嗨 CocoaN00b,我通常会,但我要出门了,几个小时内都不会重新上线。我只是想将此作为快速评论发布,以帮助您指出正确的方向。这个网站是(或应该)更多地帮助人们而不是“获得信用”。如果我回来后您仍然需要帮助,我会为您发布一个更完整的示例,但是使用我之前评论中的信息,您应该能够在 SO 和 Google 上搜索做到这一点的好示例.祝你好运!
-
所以主要问题是这样的:知道你的字典不保持排序顺序,你能不能在一开始就把它改成别的东西,或者你是否坚持它,只需要一种复制的方法将数据放入排序数组中?
标签: ios nsmutablearray nsmutabledictionary