我正在尝试在名称以 abc 开头的目录中获取所有文件的名称。到目前为止,我已经尝试了这个,但它无法正常工作。
NSString *bundleRoot = path;
NSFileManager *fm = [NSFileManager defaultManager];
NSArray *dirContents = [fm contentsOfDirectoryAtPath:bundleRoot error:nil];
NSPredicate *fltr = [NSPredicate predicateWithFormat:@"self STARTSWITH '_abc_'"];
NSArray *onlyJPGs = [dirContents filteredArrayUsingPredicate:fltr];
我收到以下异常
Unable to parse the format string "self STARTSWITH '_store_'"
答案 0 :(得分:1)
谓词中的字符串比较运算符是“BEGINSWITH”,而不是“STARTSWITH”:
[NSPredicate predicateWithFormat:@"self BEGINSWITH %@", @"abc"];
使用右侧的格式%@
即使字符串也能正常工作
包含'
或"
等特殊字符。
答案 1 :(得分:0)
根据文档(https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Predicates/Articles/pSyntax.html#//apple_ref/doc/uid/TP40001795),没有STARTSWITH
谓词。请改为BEGINSWITH
。
答案 2 :(得分:0)
试试这个
NSString * attributeName = @“firstName”;
NSString * attributeValue = @“Adam”;
NSPredicate * predicate = [NSPredicate predicateWithFormat:@“%K like%@”,
attributeName, attributeValue];
答案 3 :(得分:0)
首先用BEGINSWITH搜索“Foo”,这会找到一个字符串的开头
“Foo Word1 Word2”,“Foo OtherWord1 OtherWord2”(将找到2) 而不是CONTAINS的“Foo”(请注意Foo之前的空格),这将为您提供以“Foo”开头的单词并以空格开头
“Word1 Foo Word”,“SomeWord FooWord”,“Misc FooXWord”(将找到3) 谓词:
NSPredicate * predicate = [NSPredicate predicateWithFormat: @“(内容BEGINSWITH [c]%@)或(内容CONTAINS [c]%@)”,word,[NSString stringWithFormat:@“%@”,word]];