iOS   发布时间:2022-03-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了core-data – iOS – 当字符串以算术运算符开头时,NSPredicate string.length总是求值为0 – * /大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个简单的方法,使用NSPreDicate返回其中的行数,其中comments.length> 0.

问题是,我发现当Comment列以 – *或/开头时,length属性总是计算为0,因此该行将从计数中排除.

我在sqlite浏览器中打开了表,并验证了该列是VARCHAR.使用sqlite查询检查字符串长度可以正常工作(LENGTH(ZComments)> 0),因此这必须是CoreData问题.

这是我的功能……

-(int)getCommentsCount{
    NSFetchrequest *request = [[[NSFetchrequest alloc] init] autorelease];
    [request seTincludesSubentities:YES];
    [request setEntity:[NSEntityDescription entityForName:@"inspectionRecord" inManagedObjectContext:managedObjectContext]];

    NSPreDicate *preDicate = [NSPreDicate preDicateWithFormat:@"(comments.length > 0)"];
    [request setPreDicate:preDicate];

    NSError *err;
    NSUInteger count = [managedObjectContext countForFetchrequest:request error:&err];

    //count is ALWAYS 0 if 'comments' starts with + - * or /     WHYYY???      
    return count;
}@H_607_14@ 
 

我能够通过检查空/空字符串而不是使用.length来解决这个问题,但是我真的很想知道.当字符串以某些字符开头时,.length会失败.

这发生在任何人身上吗?

解决方法

您不能在Core Data fetch请求中使用Objective-C函数,例如length
(当Core Data转换获取请求时,简单地忽略“.length”部分
sqlite查询).但您可以简单地与空字符串进行比较:

[NSPreDicate preDicateWithFormat:@"comment != ''"]@H_607_14@ 
 

对于涉及长度的其他查询,可以使用MATCHES运算符
一个正则表达式,如下所示:CoreData predicate: string property length?.

大佬总结

以上是大佬教程为你收集整理的core-data – iOS – 当字符串以算术运算符开头时,NSPredicate string.length总是求值为0 – * /全部内容,希望文章能够帮你解决core-data – iOS – 当字符串以算术运算符开头时,NSPredicate string.length总是求值为0 – * /所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。