我从本地数据库中获取字典。 名为 aryTitle_DB 结构的数据库阵列如下所述。
({ “日期”:13/9/2014; “标题”= “ABC” },{“date”:2014/9/9; “title”=“def”},{“date”:2014/9/9; “title”=“ghi”},{“date”:14/9/2014; “title”=“abc”},{“date”:15/9/2014; “title”=“abc”},{“date”:15/9/2014; “title”=“def”})
我需要来自 aryTitle_DB
的以下类型的数组结构({“13/9/2014”:(“abc”,“def”,“ghi”)},{“14/9/2014”:(“abc”)},{“15/9 / 2014“:(”abc“,”def“)})
我在堆栈溢出和其他教程中进行了大量搜索,但无法找到它。 请帮助创建这种阵列结构。 帮助将是值得的。
答案 0 :(得分:0)
在Objective-C中,没有泛型,实际上只有Swing才能到达。
因此,您的数据结构只是NSArray
的经典NSDictionary
。
如果你想在objC中声明这个( { "13/9/2014":("abc","def","ghi") }, { "14/9/2014":("abc") }, { "15/9/2014":("abc","def") } )
,你可以这样做
NSMutableArray* result = [NSMutableArray new];
NSDictionary * dict = [NSDictionary new];
// With Modern objective C syntax, it would be like that :
dict["13/9/2014"] = @{"abc","def","ghi"};
dict["14/9/2014"] = @{"abc"};
dict["15/9/2014"] = @{"abc","def"};
[result addObject:dict];
但是,您当然可以为每个值创建中间NSMutableArray
,并使用setValue:ForKey:
的{{1}}方法将其添加到字典中。
编辑:添加算法来解析数据库答案
NSDictionary
答案 1 :(得分:0)
NSMutableArray *fromDB;
NSMutableArray *filtered;
filtered = [NSMutableArray new];
while (fromDB.count > 0){
NSDictionary *uniqueDate;
NSArray *filteredDate;
NSMutableArray *newDate;
uniqueDate = fromDB[0];
filteredDate = [fromDB filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"self.date=%K",uniqueDate[@"date"]]];
[fromDB removeObjectsInArray:filteredDate];
newDate = [NSMutableArray new];
for (NSDictionary *oneDate in filteredDate) {
[newDate addObject:oneDate[@"title"]];
}
uniqueDate = @{uniqueDate[@"date"]:newDate};
[filtered addObject:uniqueDate];
};
此代码应该有效。可能是谓词的格式应该改变,因为我没有测试它。您可以使用带有填充var字段的格式化字符串代替格式。