gpt4 book ai didi

ios - 如何创建 NSArray 的 NSArray

转载 作者:行者123 更新时间:2023-11-28 20:14:28 27 4
gpt4 key购买 nike

我正在尝试将 NSDictionaries 数组排序为基于 NSDictionary valueForKey: 第一个字母之一的字母化数组数组

实际上我想要看起来有点像这样的东西

Array A // contains NSDictionaies with keyvalue MAF strings starting with A
NSDictionary1
NSDictionary2
NSDictionary3
Array B // contains NSDictionaies with keyvalue MAF strings starting with B
NSDictionary1
NSDictionary2
NSDictionary3
Array C // contains NSDictionaies with keyvalue MAF strings starting with C
NSDictionary1
NSDictionary2
NSDictionary3
etc

所以我有一个字母数组,在每个字母数组中我想有一个 NSDictionary 值数组,keyValue MAF 的第一个字母应该匹配。

到目前为止,我有一个像这样排序的字典数组

NSSortDescriptor *sortDescriptor;
sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"MAF"
ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
sortedDictionaryArray = [arrayData sortedArrayUsingDescriptors:sortDescriptors]; // use this in cellforrow: and didselectrow:

NSLog(@"%@", sortedDictionaryArray); // this gives me a sorted array of NSdictionaries based off their MAF keyvalue.

这就是 NSDicitonary 的样子

HADM = 1;
ISLOT = 0;
ISVERT = 0;
MAF = "Yazot"; // keyvalue I am trying to work with.

然后我卡住了,我不知道从这里去哪里。如果有人能帮助我理解如何创建 NSArrays NSDictionaries 的 NSArray 那就太好了!希望我已经解释了我正在尝试正确做的事情,如果您需要更多详细信息,请告诉我,我会提供。

最佳答案

此代码将首先使用分配给键 @"MAF" 的对象对字典数组进行排序。然后它将创建一个新的字典,它将为该字符串的每个首字母添加一个可变数组并将对象添加到其中。

NSArray *array = @[@{@"MAF": @"Yazot"}, @{@"MAF": @"Lorem"},@{@"MAF": @"Ipsum"}, @{@"MAF": @"Laura"},@{@"MAF": @"Isit"}];

NSArray *sortedArray = [array sortedArrayUsingComparator:^NSComparisonResult(NSDictionary *obj1, NSDictionary *obj2) {
return [obj1[@"MAF"] compare:obj2[@"MAF"]];
}];

NSMutableDictionary *dictionary = [NSMutableDictionary dictionary];

for (NSDictionary *dict in sortedArray) {
NSString *firstLetter = [dict[@"MAF"] substringToIndex:1];

if(![[dictionary allKeys] containsObject:firstLetter])
dictionary[firstLetter] = [NSMutableArray array];

[dictionary[firstLetter] addObject:dict];

}

如果你需要不区分大小写的字符串处理,“L”和“l”应该放在同一个数组中,做

NSArray *array = @[@{@"MAF": @"Yazot"}, @{@"MAF": @"Lorem"},@{@"MAF": @"Ipsum"}, @{@"MAF": @"Laura"},@{@"MAF": @"Isit"}];

NSArray *sortedArray = [array sortedArrayUsingComparator:^NSComparisonResult(NSDictionary *obj1, NSDictionary *obj2) {
return [obj1[@"MAF"] caseInsensitiveCompare:obj2[@"MAF"]];
}];

NSMutableDictionary *dictionary = [NSMutableDictionary dictionary];

for (NSDictionary *dict in sortedArray) {
NSString *firstLetter = [dict[@"MAF"] substringToIndex:1];
firstLetter = [firstLetter lowercaseString];
if(![[dictionary allKeys] containsObject:firstLetter])
dictionary[firstLetter] = [NSMutableArray array];

[dictionary[firstLetter] addObject:dict];

}

字典结果在

{
i = (
{
MAF = Ipsum;
},
{
MAF = Isit;
}
);
l = (
{
MAF = Laura;
},
{
MAF = Lorem;
}
);
y = (
{
MAF = Yazot;
}
);
}

关于ios - 如何创建 NSArray 的 NSArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18581292/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com