' "-6ren"> ' "-我有一个我无法弄清楚的问题,所以我希望能得到一些帮助:) 我有一个带有文件系统元数据的 dore 数据数据库。我想检索大于 10 KB 的文件数,所以我使用了谓词语句。不幸的是,该应用程序崩溃了: '-6ren">
gpt4 book ai didi

ios - NSpredicate "' NSInvalidArgumentException',原因 : 'keypath SELF.SIZE not found in entity ' "

转载 作者:行者123 更新时间:2023-12-01 17:31:16 26 4
gpt4 key购买 nike

我有一个我无法弄清楚的问题,所以我希望能得到一些帮助:)

我有一个带有文件系统元数据的 dore 数据数据库。我想检索大于 10 KB 的文件数,所以我使用了谓词语句。不幸的是,该应用程序崩溃了:

'NSInvalidArgumentException',原因:'keypath SELF.SIZE not found in entity'

这里的代码:

// Initialize NSFetchrequest and define entity

NSError *error;
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *file = [NSEntityDescription entityForName:@"Files" inManagedObjectContext:appDelegate.managedObjectContext];
[request setEntity:file];

// Query on Number of files between 0 and 10000 bytes

NSNumber * tenk = @10000;
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"any self.size < %@", tenk];
[request setPredicate:predicate];
fetchResult = [appDelegate.managedObjectContext executeFetchRequest:request error:&error];

int primaBar = fetchResult.count;
NSLog(@"Files smaller than 10k: %d :",primaBar);

如果我比较字符串而不是比较 NSnumbers,则代码有效(例如,我能够检索扩展名为“pdf”的文件数,谓词 @"any self.extension contains %@",extension)所以我相信我'我在访问 NSnumber self.size 时做错了什么。

提前感谢您的任何提示。

dom

最佳答案

谜底解决了。

- 从文档:

https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Predicates/Articles/pSyntax.html

...一直到底部,您可以阅读:

/*

保留字

保留以下字词:

AND, OR, IN, NOT, ALL, ANY, Some, NONE, LIKE, CASEINSENSITIVE, CI, MATCHES, CONTAINS, BEGINSWITH, ENDSWITH, BETWEEN, NULL, NIL, SELF, TRUE, YES, FALSE, NO, FIRST, LAST,大小、任意键、子查询、转换、TRUEPREDICATE、FALSEPREDICATE

.
*/

您可以看到 size 是保留的工作,这确实干扰了谓词的执行。

最后用 ' ' 转义它,如下所示:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"any self.'size' < %@" , tenk];

使我的查询工作。

我是 IOS 编程的新手,但这是一个棘手的问题(以最难的方式学习编码......)。

感谢您的头脑 Storm !

dom

关于ios - NSpredicate "' NSInvalidArgumentException',原因 : 'keypath SELF.SIZE not found in entity <NSSQLEntity Files id=1>' ",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21346779/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com