在核心数据中存储文件路径会引发异常

时间:2013-03-08 11:22:33

标签: ios ios5 core-data ios6

我正在尝试将设备文档文件夹中文件的文件路径存储在核心数据实体中,它正在正确插入但是当我尝试使用路径属性上的谓词获取记录时,它会抛出异常

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Unable to parse the
 format string "filePath==/Users/****/Library/Application Support/iPhone Simulator/5.1/Applications
/8C1B07FD-E372-4CD8-9A02-FDA321ECE629/Documents"'

属性正确存储在Core Data DB中。

要取出的代码。

    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
    fetchRequest.predicate=[NSPredicate predicateWithFormat:[NSString stringWithFormat:@"filePath==%@",Path]];
    NSSortDescriptor *sortDescriptor=[NSSortDescriptor sortDescriptorWithKey:@"fileName" ascending:YES];
    fetchRequest.sortDescriptors=[NSArray arrayWithObject:sortDescriptor];
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"File"
                                              inManagedObjectContext:self.managedObjectContext];
    [fetchRequest setEntity:entity];

    NSArray *fetchedObjects = [self.managedObjectContext
                               executeFetchRequest:fetchRequest error:nil
                               ];

2 个答案:

答案 0 :(得分:1)

也许文件路径包含阻止正确解析的字符,例如空格。试试这个:

[NSPredicate predicateWithFormat:@"filePath = '%@'", path]; 

答案 1 :(得分:1)

NSPredicate类引用中的示例使用字符串的双引号,例如

Simple comparisons, such as grade == "7" or firstName like "Shaffiq"

显示的错误包含没有引号的谓词 - 可能是问题的根源?