如何检查plist文件中的项目 - 可可?

时间:2012-01-21 03:27:54

标签: string cocoa plist

我看了很多其他问题,但这些问题并不完全正确。我正在尝试根据文件名将NSTextField设置为某个字符串。我想创建一个plist文件,其中包含该文件的所有可能名称及其键,以将NSTextField的字符串设置为。但我不知道如何检查plist的项目,如果它不存在,我希望它执行代码将文本字段留空。在我有if语句之前说如果文件名等于this然后让它说出来但我无法让其他部分工作,只有一个工作。所以我以为我会检查plist但是我不知道该怎么做并将它与if-else语句一起使用。这就是我之前所拥有的:

NSString *inputName = [input stringValue];
NSString *theFileName = [[inputName lastPathComponent] stringByDeletingPathExtension];

if ([theFileName isEqualToString:@"038-3698-001"]) {
    [key setStringValue:@"7ed37d8c051da8f8d31b0ccf0980fa5ffa54770c7e68ecb5ebf28abe683cadf21a4a99ed"];
}

if ([theFileName isEqualToString:@"038-3763-001"]) {
    [key setStringValue:@"a31ffd506c6711c5a0c52c9f0a2f7208a2f63ad9dd40506e70d80ea20a981eb1312bc774"];
}
else {
    [key setStringValue:@""];
}

编辑: 我让它检查了plist的键,但现在我需要它来从plist中获取键的值。像这样:

NSString *inputName = [input stringValue];
NSString *theFileName = [[inputName lastPathComponent] stringByDeletingPathExtension];
NSDictionary *fileKeys = [[NSMutableDictionary alloc] initWithContentsOfFile:
                          [[NSBundle mainBundle] pathForResource:@"Keys" ofType:@"plist"]];

if ([fileKeys valueForKey:theFileName]) {
    NSString *key = [NSString valueForKey:theFileName];
    [filesField setStringValue:key];
}
else {
    [filesField setStringValue:@""];
}

没关系,我明白了。这是正确的代码:

NSString *inputName = [input stringValue];
NSString *theFileName = [[inputName lastPathComponent] stringByDeletingPathExtension];
NSDictionary *fileKeys = [[NSMutableDictionary alloc] initWithContentsOfFile:
                          [[NSBundle mainBundle] pathForResource:@"Keys" ofType:@"plist"]];

if ([fileKeys valueForKey:theFileName]) {
    NSString *key = [fileKeys valueForKey:theFileName];
    [filesField setStringValue:key];
}
else {
    [filesField setStringValue:@""];
}

1 个答案:

答案 0 :(得分:1)

首先,您可以将plist加载到字典中,如下所示:

NSDictionary* fileKeys = [[NSMutableDictionary alloc] initWithContentsOfFile:
         [[NSBundle mainBundle] pathForResource:@"fileKeys" ofType:@"plist"]];

然后,您可以使用-valueForKey:查询密钥。因此,您可以检查字典中的文件名,如果存在,请将key设置为关联值。