如何在 plist 的标签上显示值。 objective-c
how to display values on labels from plist. objective-c
我有 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>
<dict>
<key>name</key>
<string>Daniel</string>
<key>Description</key>
<string>Bad boy</string>
</dict>
<dict>
<key>name</key>
<string>Mary</string>
<key>description</key>
<string>Good girl</string>
</dict>
</array>
</plist>
我想根据名称在我的标签值上显示名称和描述:
NSString *path = [[NSBundle mainBundle] pathForResource:@"PropList" ofType:@"plist"];
ComplexArray = [NSArray arrayWithContentsOfFile:path];
NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:path];
for (int i = 0; i < [ComplexArray count]; i++) {
ThirdViewController *item = [ComplexArray objectAtIndex:i];
if ([item.name isEqualToString: @"Mary"]) {
_nameLabel.text = [dict objectForKey:@"name"];
_descriptionLabel.text = [dict objectForKey:@"description"];
}
}
以及为什么我不能这样做(我在没有 plist 时这样做,但现在出现 return 错误):
NSString *path = [[NSBundle mainBundle] pathForResource:@"PropList" ofType:@"plist"];
ComplexArray = [NSArray arrayWithContentsOfFile:path];
for (int i = 0; i < [ComplexArray count]; i++) {
ThirdViewController *item = [ComplexArray objectAtIndex:i];
if ([item.name isEqualToString: @"Mary"]) {
_nameLabel.text=item.name;
_descriptionLabel.text=item.description;
}
}
试试这个代码它一定能完美运行!
// Read plist from bundle and get Root Dictionary out of it
NSDictionary *dictRoot = [NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"PropList" ofType:@"plist"]];
// Your dictionary contains an array of dictionary
// Now pull an Array out of it.
NSArray *array = [dictionary objectForKey:@"keyarray"];
// Now a loop through Array to fetch single Item
for (NSDictionary *dict in array) {
if ([[dict objectForKey:@"name"] isEqualToString:@"Mary"])
{
// Do stuff...
NSString *name= [dict objectForKey:@"name"];
NSString *description= [dict objectForKey:@"Description"];
}
}
您需要在数组前添加一个键。
<key>keyarray</key>
执行以下步骤:
获取字典中的plist数据
NSString *plistPath=[[NSBundle mainBundle] pathForResource:@"NameOfPlistFile" ofType:@"plist"];
NSDictionary *bundleDictionary=[NSDictionary dictionaryWithContentsOfFile:plistPath];
获取关于键的值
NSString *nameString = [bundleDictionary valueForKey:kCustomURLScheme];
希望对您有所帮助!
再说一次,你几乎已经做对了。
NSString *path = [[NSBundle mainBundle] pathForResource:@"PropList" ofType:@"plist"];
ComplexArray = [NSArray arrayWithContentsOfFile:path];
for (NSDictionary *dict in ComplexArray) {
if ([dict[@"name"] isEqualToString:@"Mary"]) {
_nameLabel.text = dict[@"name"];
_descriptionLabel.text = dict[@"description"];
break;
}
}
我有 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>
<dict>
<key>name</key>
<string>Daniel</string>
<key>Description</key>
<string>Bad boy</string>
</dict>
<dict>
<key>name</key>
<string>Mary</string>
<key>description</key>
<string>Good girl</string>
</dict>
</array>
</plist>
我想根据名称在我的标签值上显示名称和描述:
NSString *path = [[NSBundle mainBundle] pathForResource:@"PropList" ofType:@"plist"];
ComplexArray = [NSArray arrayWithContentsOfFile:path];
NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:path];
for (int i = 0; i < [ComplexArray count]; i++) {
ThirdViewController *item = [ComplexArray objectAtIndex:i];
if ([item.name isEqualToString: @"Mary"]) {
_nameLabel.text = [dict objectForKey:@"name"];
_descriptionLabel.text = [dict objectForKey:@"description"];
}
}
以及为什么我不能这样做(我在没有 plist 时这样做,但现在出现 return 错误):
NSString *path = [[NSBundle mainBundle] pathForResource:@"PropList" ofType:@"plist"];
ComplexArray = [NSArray arrayWithContentsOfFile:path];
for (int i = 0; i < [ComplexArray count]; i++) {
ThirdViewController *item = [ComplexArray objectAtIndex:i];
if ([item.name isEqualToString: @"Mary"]) {
_nameLabel.text=item.name;
_descriptionLabel.text=item.description;
}
}
试试这个代码它一定能完美运行!
// Read plist from bundle and get Root Dictionary out of it
NSDictionary *dictRoot = [NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"PropList" ofType:@"plist"]];
// Your dictionary contains an array of dictionary
// Now pull an Array out of it.
NSArray *array = [dictionary objectForKey:@"keyarray"];
// Now a loop through Array to fetch single Item
for (NSDictionary *dict in array) {
if ([[dict objectForKey:@"name"] isEqualToString:@"Mary"])
{
// Do stuff...
NSString *name= [dict objectForKey:@"name"];
NSString *description= [dict objectForKey:@"Description"];
}
}
您需要在数组前添加一个键。
<key>keyarray</key>
执行以下步骤:
获取字典中的plist数据
NSString *plistPath=[[NSBundle mainBundle] pathForResource:@"NameOfPlistFile" ofType:@"plist"]; NSDictionary *bundleDictionary=[NSDictionary dictionaryWithContentsOfFile:plistPath];
获取关于键的值
NSString *nameString = [bundleDictionary valueForKey:kCustomURLScheme];
希望对您有所帮助!
再说一次,你几乎已经做对了。
NSString *path = [[NSBundle mainBundle] pathForResource:@"PropList" ofType:@"plist"];
ComplexArray = [NSArray arrayWithContentsOfFile:path];
for (NSDictionary *dict in ComplexArray) {
if ([dict[@"name"] isEqualToString:@"Mary"]) {
_nameLabel.text = dict[@"name"];
_descriptionLabel.text = dict[@"description"];
break;
}
}