是否有可能按名称检查数组中的对象。 在我的应用程序中的某个时刻,我需要访问plist并提取存储在我找到的对象下的信息。 我需要这样做的原因是因为我没有在对象放置在我的数组中的整数。
我已经开始了常规程序,但我没有到达任何地方。也许它对我来说太晚了......
这是我的plist看起来的样子
Array
Dictionary
title ...
text ...
ect ...
Dictionary
title ...
text ...
ect ...
Dictionary
title ...
text ...
ect ...
到目前为止,我的代码根本没有帮助。我肯定做错了什么。
-(NSString*)nameFromPlist:(NSString*)name {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *writableDBPath = [documentsDirectory stringByAppendingPathComponent:@"Orte.plist"];
_regionArray = [NSArray arrayWithContentsOfFile:writableDBPath];
NSString *string = [[NSString alloc]init];
for(NSDictionary *dict in _regionArray) {
string = [[dict objectForKey:name] valueForKey:@"title"];
}
return [NSString stringWithFormat:@"%@",string];
}
我的字符串只是返回null。
任何想法? 非常感谢!
解答:
以下是每个人的代码:
- (NSString *)nameFromPlist:(NSString *)name {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *tmpFileName = [[NSString alloc] initWithFormat:@"Orte.plist"];
NSString *path = [documentsDirectory stringByAppendingPathComponent:tmpFileName];
NSString *string;
NSMutableArray *array = [NSMutableArray arrayWithContentsOfFile:path];
NSDictionary *dict = [[NSDictionary alloc] init];
NSString *title;
for (int i=0; i<[array count]; i++) {
dict = [array objectAtIndex:i];
title = [dict valueForKey:@"title"];
if([title isEqualToString:name]) {
string = [dict valueForKey:@"title"];
NSLog(@"Titel: %@", string);
}
}
return [NSString stringWithFormat:@"%@",string];
}
非常感谢大家!
答案 0 :(得分:0)
首先你不需要分配NSString,因为你会从valueForKey获得一个不同的。
然后,如果我理解你想要获得更好的代码,可能会使用NSPredicate
或基于块的indexOfObjectPassingTest
。两者都遍历数组并对元素执行测试以获得匹配元素(或它们的索引)。
答案 1 :(得分:0)
NSString* plistPath = [[NSBundle bundleForClass:[self class]] pathForResource:@"<PlistFileName>" ofType:@"plist"];
NSArray *array = [[NSArray alloc] initWithContentsOfFile:plistPath];
NSMutableArray* titles = [[NSMutableArray alloc] init];
for (NSDictionary* d in array)
[titles addObject:[d objectForKey:@"title"]];
NSLog(@"Object found at index %i", [a indexOfObject:@"<Your object name>"]);
确保您正在测试NSNotFound是否找不到,而不是(比如说)0。