开发者

transforming a plist in another nsdictionary

I'm not english, new to objective c and new to this website. But i hope you will understand my problem. I tried to use the search engine but i couldn't find a answer...

THE PROBLEM: i have a plist file like this

<plist version="1.0">
<array>
<dict>
    <key>ID</key>
    <string>001</string>
    <key>CAT</key>
    <string>A</string>
    <key>TITLE</key>
    <string>AAAA01</string>
</dict>
<dict>
    <key>ID</key>
    <string>002</string>
    <key>CAT</key>
    <string>A</string>
    <key>TITLE</key>
    <str开发者_Go百科ing>AAAA02</string>
</dict>
<dict>
    <key>ID</key>
    <string>003</string>
    <key>CAT</key>
    <string>B</string>
    <key>TITLE</key>
    <string>BBBB01</string>
</dict>
.....
</array>
</plist>

so i have many entries like this. every entry has a category (CAT) like in my example "A" and "B". now i need a code to transform this to the following:

NSArray
    NSDictionary
        CAT => "A"
        VALUES => {"AAAA01","AAAA02"}
    NSDictionary
        CAT => "B"
        VALUES => {"BBBB01", ...}
    ETC.

MY SOLUTION:

i get the plist with the following code

NSString *path = [[NSBundle mainBundle] pathForResource:@"Dictonary" ofType:@"plist"];
arrayIndex = [[NSArray alloc] initWithContentsOfFile:path];

Now i have everything saved in the arrayIndex but then i dont find a way to transform the code in a new array to get my wanted result.

please can anybody help me?

THANK YOU very much!


This is straight programming.
It is more easily done in two steps saving trying to find an entry to add to.

// First create a dictionary of CAT and the values,
    NSMutableDictionary *tempDict = [NSMutableDictionary dictionary];
    for (NSDictionary *item in arrayIndex) {
        NSString *cat = [item valueForKey:@"CAT"];

        NSMutableArray *tempArray = [tempDict valueForKey:cat];
        if (!tempArray) {
            tempArray = [NSMutableArray array];
            [tempDict setValue:tempArray forKey:cat];
        }

        NSString *v = [item valueForKey:@"TITLE"];
        [tempArray addObject:v];
    }
    NSLog(@"tempDict: %@", tempDict);
// This may well be a good final result


// This step transforms the dictionary into a list of dictionaries    
    NSMutableArray *newList = [NSMutableArray array];
    NSArray *keys = [[tempDict allKeys] sortedArrayUsingSelector:@selector(compare:)];
    for (NSString *cat in keys) {
        [newList addObject:[NSDictionary dictionaryWithObjectsAndKeys:
                            cat, @"CAT",
                            [tempDict valueForKey:cat], @"VALUES",
                            nil]];
    }
    NSLog(@"newList: %@", newList);
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜