我正在尝试使用Plist填充我的数组。这是我的plist文件,Menu.plist。
-Item 0,type:dictionary,value(1 item) - Title,string,Contacts
-Item 1,type:dictionary,value(1 item) - Title,string,Edit
- (void)viewDidLoad
{
[super viewDidLoad];
NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"Menu" ofType:@"plist"];
self.menuArray = [NSMutableArray arrayWithContentsOfFile:plistPath];
}
我正在尝试用单元格Contacts和Edit填充我的表视图,但是我的menuArray没有加载,我检查了NSLog并且* plist正在获取路径,但是在self.menuArray中它仍然显示0个对象,而它应该是2.我之前做过这个并且工作正常我不知道今天出了什么问题。任何建议???
答案 0 :(得分:3)
根据您的问题,plist内容如下
XML格式
<?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>Contact</string>
</dict>
<dict>
<key>Title</key>
<string>Edit</string>
</dict>
</array>
</plist>
如果是这种情况,请尝试以下
NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"Menu" ofType:@"plist"];
NSArray *menuDataArray = [NSMutableArray arrayWithContentsOfFile:plistPath];
NSLog(@"Plist Content Array = %@", menuDataArray);
输出
Plist Content Array = (
{
Title = Contact;
},
{
Title = Edit;
}
)
注意:强>
答案 1 :(得分:0)
试试这个
- (void)viewDidLoad
{
[super viewDidLoad];
self.menuArray=[[NSMutableArray alloc]init];
NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"Menu" ofType:@"plist"];
self.menuArray = [NSMutableArray arrayWithContentsOfFile:plistPath];
}
你必须分配NSMutableArray。
答案 2 :(得分:0)
您可以粘贴plist文件的内容吗? 如果你想从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>
<string>Brand A</string>
<string>Brand B</string>
<string>Brand C</string>
<string>Brand D</string>
</array>
</plist>
在您的情况下,您可能尝试从基于字典的plist创建NSArray。你应该使用:
NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:plistPath];
如果该字典的某个对象是数组,则可以通过以下方式获取:
NSArray *array = [dict objectForKey:@"KeyForSomeArray"];