我有一个带有键值的plist,键是字符串,值也是字符串。 我不希望根据plist中的键输出uitableview部分标题 。那就是说我的意思是key1-应该是第1节的标题,key-2应该是第2节的标题,很快就会出现。 这是我的示例plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Settings</key>
<array>
<string>one-one</string>
<string>one-two</string>
</array>
<key>Notifications</key>
<array>
<string>two-one</string>
<string>two-two</string>
</array>
<key>Info</key>
<array>
<string>three_one</string>
<string>three_two</string>
<string>three_three</string>
</array>
</dict>
</plist>
以下是我尝试在viewDidLoad
中重新排列的代码_
data = [NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"settings" ofType:@"plist"]];
NSArray *first = [_data valueForKey:@"Settings"];
NSArray *second = [_data valueForKey:@"Notifications"];
NSArray *third = [_data valueForKey:@"Info"];
NSDictionary *temp =[[NSDictionary alloc]
initWithObjectsAndKeys:first, @"Settings",second, @"Notificatitons",third, @"Info", nil];
_data = temp;
这是表数据源的配置
#pragma mark - data source
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return [_data count];
}
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
return [[_data allKeys] objectAtIndex:section];
}
- (NSInteger)tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section
{
NSString *continent = [self tableView:_testTable titleForHeaderInSection:section];
return [[_data valueForKey:continent] count];
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *rekebishaCell = @"RekebishaCell";
NSString *continent = [self tableView:_testTable titleForHeaderInSection:indexPath.section];
NSString *sub_settings = [[_data valueForKey:continent] objectAtIndex:indexPath.row];
UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier: rekebishaCell];
if(cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1
reuseIdentifier:rekebishaCell];
}
// config cell ui
//cell.textLabel.textColor = [UIColor whiteColor];
cell.textLabel.text = sub_settings;
return cell;
}
到目前为止,我得到了这个
我需要这个输出 1-设置 2-通知 3-INFO
我很欣赏任何帮助,可能是我一直盯着我的屏幕已经有一段时间了,我的大脑遗失了一些东西,:P
答案 0 :(得分:0)
NSDictionary
不会以有序方式存储键/值。如果您想要它们的订购,您需要将它们全部拉出来并使用不同的结构进行排序,很可能是NSArray
见S.O.回答:
NSDictionary's allKeys array messed up - not in the order they are in the dictionary?