我看了很多其他问题,但这些问题并不完全正确。我正在尝试根据文件名将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:@""];
}
答案 0 :(得分:1)
首先,您可以将plist加载到字典中,如下所示:
NSDictionary* fileKeys = [[NSMutableDictionary alloc] initWithContentsOfFile:
[[NSBundle mainBundle] pathForResource:@"fileKeys" ofType:@"plist"]];
然后,您可以使用-valueForKey:
查询密钥。因此,您可以检查字典中的文件名,如果存在,请将key
设置为关联值。