如何解决来自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\">
<array>
<array>
<string>Title 1</string>
<string>Subtitle 1</string>
<string>image1.png</string>
</array>
<array>
<string>Title 2</string>
<string>Subtitle 2</string>
<string>image2.png</string>
</array>
</array>
</plist>
这是我正在处理的应用程序的Plist文件。
我不确定如何使用许多数组的第一个字符串来创建一个具有所有标题的NSMutableArray,并再次为字幕和图像名称创建一个NSMutableArray。
目前,我的解决方法是为每种类型的字符串创建3个单独的Plist文件,这可能会很麻烦。
解决方法
要在保留plist数据结构的同时回答您的问题,您可以简单地执行以下操作:
NSArray *rootArray = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@\"your-plist\" ofType:@\"plist\"]];
int numItems = [rootArray count];
NSMutableArray *titles = [NSMutableArray arrayWithCapacity:numItems];
NSMutableArray *subtitles = [NSMutableArray arrayWithCapacity:numItems];
NSMutableArray *images = [NSMutableArray arrayWithCapacity:numItems];
for (NSArray *itemData in rootArray) {
[titles addObject:[itemData objectAtIndex:0]];
[subtitles addObject:[itemData objectAtIndex:1]];
[images addObject:[itemData objectAtIndex:2]];
}
但是,我建议您使用类似以下的结构:
<?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\">
<array>
<dict>
<key>title</key>
<string>Title 1</string>
<key>subtitle</key>
<string>Subtitle 1</string>
<key>image</key>
<string>image1.png</string>
</dict>
<dict>
<key>title</key>
<string>Title 2</string>
<key>subtitle</key>
<string>Subtitle 2</string>
<key>image</key>
<string>image2.png</string>
</dict>
</array>
</plist>
此时,您可以使用更明确的代码,如下所示:
NSArray *rootArray = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@\"your-plist\" ofType:@\"plist\"]];
int numItems = [rootArray count];
NSMutableArray *titles = [NSMutableArray arrayWithCapacity:numItems];
NSMutableArray *subtitles = [NSMutableArray arrayWithCapacity:numItems];
NSMutableArray *images = [NSMutableArray arrayWithCapacity:numItems];
for (NSDictionary *itemData in rootArray) {
[titles addObject:[itemData objectForKey:@\"title\"]];
[subtitles addObject:[itemData objectForKey:@\"subtitle\"]];
[images addObject:[itemData objectForKey:@\"image\"]];
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。