是否可以获取以某个字符串开头的目录中所有文件的名称?

时间:2013-12-27 11:23:04

标签: objective-c cocoa-touch nspredicate

我正在尝试在名称以 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_'"

4 个答案:

答案 0 :(得分:1)

谓词中的字符串比较运算符是“BEGINSWITH”,而不是“STARTSWITH”:

[NSPredicate predicateWithFormat:@"self BEGINSWITH %@", @"abc"];

使用右侧的格式%@即使字符串也能正常工作 包含'"等特殊字符。

答案 1 :(得分:0)

答案 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]];