从Plist中读取信息以在TableView中使用

我已经检查了其他post,但似乎没有回答我的问题,所以在这里我去:)
我有一个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>001</key> <dict> <key>Name</key> <string>Name1</string> <key>Number</key> <string>001</string> </dict> <key>002</key> <dict> <key>Name</key> <string>Name2</string> <key>Number</key> <string>002</string> </dict> </dict> </plist> 

我试图让这个代码转换为一个数组,并用于一个TableView源。 然而,即使我以为我见过其他的post,没有人帮助我(我可以看到,这是我第一个真正的iOS项目,所以我可能不会100%操纵他们的代码)。 我想要从这个Plist生成表格,并且由于它至less有100个项目(通过Plist添加更多项目),我想要生成它。
然而,我正在努力做的主要事情是让数组获取Key1,然后Key2,Key3的信息…就像在下面的手动代码(我必须手动input,我会添加更多的信息,所以我希望它来自Plist):

 NSDictionary *item1 = [[NSDictionary alloc] initWithObjectsAndKeys: @"Name1", @"Name", @"001", @"Number", nil]; NSDictionary *item2 = [[NSDictionary alloc] initWithObjectsAndKeys: @"Name2", @"Name", @"002", @"Number", nil]; NSDictionary *item3 = [[NSDictionary alloc] initWithObjectsAndKeys: @"Name3", @"Name", @"003", @"Number", nil]; 

我希望能够改变表格的顺序(在数字和字母之间),我认为这不是很重要,但是我想把它放在里面,用不能做的意思犯了一个错误?
感谢您的阅读,
约瑟夫·达菲

编辑:解决,但新问题,请阅读下面。 现在解决了,谢谢! 感谢您的信息,这是最有用的! 但是,当我把以下内容:

 - (void)viewDidLoad { NSBundle *bundleLocation = [NSBundle mainBundle]; NSString *arrayLocation = [bundleLocation pathForResource:@"plistname" ofType:@"plist"]; NSArray *plistcontentsArray = [[NSArray alloc] initWithContentsOfFile:arrayLocation]; self.pokemonNames = pokemonArray; [bundleLocation release]; [plistArray release]; [super viewDidLoad]; } 

一切工作正常。 但是当我添加[arrayLocation release]; 它与“exc_bad_access”崩溃。 有任何想法吗? 🙂

只需使用“数组”元素而不是属性列表中的“字典”元素。 例如:

 <?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>Name</key> <string>Name1</string> <key>Number</key> <string>001</string> </dict> <dict> <key>Name</key> <string>Name2</string> <key>Number</key> <string>002</string> </dict> </array> </plist> 

你也只是要存储名称,或者你会在嵌套字典中存储更多的信息? 如果不是的话,这可以减less到:

 <?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> <string>Name1</string> <string>Name2</string> </array> </plist> 

要在属性列表中加载数组,只需使用以下内容。 (将“Array”更改为属性列表的名称,并且更可能使用NSArray的实例variables。)

 NSBundle * mainBundle = [NSBundle mainBundle]; NSString * arrayLocation = [mainBundle pathForResource:@"Array" ofType:@"plist"]; NSArray * array = [[NSArray alloc] initWithContentsOfFile:arrayLocation]; 

并从您可以使用的数组拉出信息:

 NSString * name = [array objectAtIndex:0]; 

至于做字母顺序,你可以find如何做到这一点:

http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Collections/Articles/Arrays.html#//apple_ref/doc/uid/20000132-SW5