2013-02-13 82 views
0

标签文字使用的iOS名字我现在有一个plist文件看起来像这样:阵列从plist中

<plist version="1.0"> 
<dict> 
    <key>Hello</key> 
    <array/> 
    <key>Hi</key> 
    <array/> 
</dict> 
</plist> 

多个键可以由用户加入到这一点。我需要能够使用这些键作为TableView中的标签。 TableView已准备好并设置完毕。我只需要能够抓住每个数组并将其用于标签。我怎样才能做到这一点?

+0

如果您能够将plist结构更改为Dictionary包含数组,并且该数组包含其他字典,则可以按plist的顺序从plist获取每个项目。第一个元素Hello,第二个元素hi等等 – 2013-02-13 16:19:21

回答

1

从plist中加载NSDictionary,然后获得所有密钥[dictionary allKeys],它返回您的情况下的字符串数组。请注意,该字典不保存键的顺序。所以如果你想每次都显示相同的表格,你必须将键码分开存储或排序。

+0

这就是我现在在我的'cellForRowAtIndexPath'方法中做的事情: 'UILabel * label =(UILabel *)[cell viewWithTag:1000]; NSString * path = [[NSBundle mainBundle] pathForResource:@“Data”ofType:@“plist”]; NSMutableDictionary * dictionary = [NSMutableDictionary dictionaryWithContentsOfFile:(NSString *)path]; label.text = [[dictionary allKeys] objectAtIndex:indexPath.row];' – 2013-02-13 16:14:55

+0

ugh。这可能会起作用(但更有可能这不起作用,正如我在答复中所说的,所有键并不保证每次调用时键的顺序相同),但这非常难看。不要在每个cellForRowAtIndexPath调用中加载字典。这非常昂贵。最好将[字典allKeys]存储为视图控制器的NSArray属性(例如viewDidLoad方法),然后使用它。 – kovpas 2013-02-13 16:17:55

+0

好的,我为我的视图控制器添加了一个ivar,它是'NSArray * viewerKeys'。在'viewDidLoad'我添加了'NSString * path = [[NSBundle mainBundle] pathForResource:@“Data”ofType:@“plist”]; NSMutableDictionary * dictionary = [NSMutableDictionary dictionaryWithContentsOfFile:(NSString *)path]; viewerKeys = [dictionary allKeys];'和cellForRowAtIndexPath'包含'label.text = [viewerKeys objectAtIndex:indexPath.row'。没有快乐 – 2013-02-13 16:24:02