使用NSDictionaries的NSMutableArray创建一个Sectioned UITableView

时间:2014-03-17 23:06:23

标签: ios objective-c uitableview nsmutablearray nsdictionary

我有一个NSMutableArray NSDictionaries我想要格式化,以便UITableView使用基于NSDictionary keys之一的部分。

我的NSDicitonary有两个值

Name
Key

键是数字1的NSString - N

我设法创建了一个NSArray个唯一值来填充每个部分的标题,但是我不知道如何拆分这个NSMutableArray的NSDictionaries {{1} NSNictionaries的NSArrays的NSMutableArray ..如果这是有意义的。

更新 为了向我的问题添加更多细节,我有一个NSDictionaries的NSMutableArray。

into an

我希望在像这样的UITableView中显示它

{
 Name: Jack
 Key: 1
}
{
 Name: John
 Key: 1
}
{
 Name: Jack
 Key: 1
}
{
 Name: Jack
 Key: 2
}
{
 Name: Jack
 Key: 3
}
{
 Name: Sean
 Key: 3
}
{
 Name: Sally
 Key: 3
}

我确定需要做的事情是

Section 1
- Jack
- John
- Jack
Section 2
- Jack
Section 3
- Jack
- Sean
- Sally

我已成功为部分

创建了uniqueArray
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

现在我不知道如何找到每个部分中的行数,然后将NSDictionary传递给cellforrow中的一个对象,以便在单元格中显示正确的值?

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

希望这会对你有所帮助:

// testing
NSMutableArray *test = [[NSMutableArray alloc]init];
NSArray *testSample = @[@{@"1": @"hello1",@"2":@"world1",@"3":@"!1"},
                          @{@"1": @"hello2",@"2":@"world2",@"3":@"!2"},
                          @{@"1": @"hello3",@"2":@"world3",@"3":@"!3"}];
[test addObjectsFromArray:testSample];
NSMutableArray *sortedTestArray = [[NSMutableArray alloc] init];
NSLog(@"%@",test);

//get the max length of the nsdictionary
NSDictionary *item0 = [test objectAtIndex:0];
NSInteger maxLength = [[item0.allKeys lastObject] integerValue];
//key start from @"1"
for (int a = 1; a <= maxLength; a++) {
NSString *keyNumber = [NSString stringWithFormat:@"%d", a];
NSArray *sortedItem = [test valueForKey:keyNumber];
//the index starts from 0
[sortedTestArray insertObject:sortedItem atIndex:a-1];
}
//now the array will be like this,so the item in index 0 will be the key @"1"'s items. index 1 will be the key @"2"'s items...
NSLog(@"%@",sortedTestArray);

原始数据:

(
        {
        1 = hello1;
        2 = world1;
        3 = "!1";
    },
        {
        1 = hello2;
        2 = world2;
        3 = "!2";
    },
        {
        1 = hello3;
        2 = world3;
        3 = "!3";
    }
)

排序后的输出:

(
        (
        hello1,
        hello2,
        hello3
    ),
        (
        world1,
        world2,
        world3
    ),
        (
        "!1",
        "!2",
        "!3"
    )
)