我正在创建一个应用程序,该应用程序检索特定餐具的地址列表,并按首字母将它们分组在字典中。因此,阿姆斯特丹将置于键“ A”下。

从CSV文件读取这些地址并进行迭代。我遇到的问题是我用A-Z键制作了字典。

在我的for循环中,我想将每个地址添加到正确的键中,但是由于它处于循环中,所以我一次只具有一个唯一的地址。 [字典setObject]将仅放置在最后一个值中。

我应该如何处理?

最佳答案

使用NSDictionaryNSMutableArrays(A-Z)怎么办?然后,您将可以添加以下内容:

for (NSString* theName in (...)) {
    NSString* firstLetter = [[theName substringToIndex:1] uppercase];

    // Check this in case there is 'malformed' input, e.g. strings beginning
    // with non-alpha characters
    if ([theDictionary objectForKey:firstLetter]) {
        [theDictionary[firstLetter] addObject:theName];
    } else {
            NSLog(@"Skipping item %@", theName);
    }
}


您可以像这样初始化theDictionary

theDictionary = [NSMutableDictionary dictionary];
for (char c = 'A'; c <= 'Z'; c++) {
    theDictionary[[NSString stringWithFormat:@"%c", c]] = [NSMutableArray array];
}

10-08 09:14