iOS - 当字符串以算术运算符 + - * / 开头时,NSPredicate string.length 始终计算为 0

2024-04-05

我有一个简单的方法,使用 NSPredicate 返回 comments.length > 0 的行数。

问题是,我发现当 Comment 列以 + - * 或 / 开头时,长度属性的计算结果始终为 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;
}

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

有人发生过这种情况吗?


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

 [NSPredicate predicateWithFormat:@"comment != ''"]

对于涉及长度的其他查询,您可以使用 MATCHES 运算符 正则表达式如下所示:CoreData 谓词:字符串属性长度? https://stackoverflow.com/questions/19889211/coredata-predicate-string-property-length.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iOS - 当字符串以算术运算符 + - * / 开头时,NSPredicate string.length 始终计算为 0 的相关文章

  • 复杂对象上的自定义 NSSortDescriptor

    这是我的第一篇文章 如果我可能不尊重所有惯例 我很抱歉 尽管我会尽力而为 我以前总是在 SO 上找到解决我的问题的方法 但我完全陷入了一个相当复杂的可可问题 我正在尝试对 CoreData 对象列表进行复杂的排序 我有一个由 Book 对象
  • 如何防止“CoreData无法完成故障”?

    我们偶尔会收到 CoreData 无法完成故障 的信息 我们已阅读 Apple 文档 但不清楚允许保留哪些内容 我们非常小心地为每个线程创建一个上下文等 但是 我们的应用程序正在做的一件事是我们在 UIViewController 上保留
  • 导入 CoreData 时检查重复项

    我正在使用 RestKit 将数据导入到核心数据存储中 并且需要检查重复项 如果该商品已在商店中 我想用最新的属性更新它 如果它是一个新项目 我想创建它 导入速度很慢 所以我使用了 Instruments 发现导入的最长部分是检查该项目是否
  • iOS 的云存储选项

    我正在尝试创建一个后端 让许多用户可以在我正在创建的 iPhone 应用程序中相互通信 我尝试过使用 Core Data Google App Engine Google Cloud Storage 和 Amazon Web Service
  • 使用简洁形式的 NSManagedObjectID URI?

    在我的应用程序中 我使用 Core Data 以及不使用 Core Data 的附加 sqlite 数据库 在这个附加数据库中 我有一些列存储对NSManagedObject实例通过每个实例的NSManagedObjectID 我得到一个实
  • Swift NSPredicate 不在

    我有一个包含 X 个项目的数组 我需要通过 uid 过滤掉特定项目 我写了以下谓词 我认为它是正确的 我面临的问题是 Swift 编译器只允许我使用接受 argumentArray 的初始化程序 let uids 34885a9f0897f
  • 使用Core Data中的Cascade删除关系对象

    我希望使用核心数据执行一些简单的删除 但仅需要对此的一些建议 我有一个包含交易 名称 事件和日期实体的模型 该交易与其他每个实体都有链接 在应用程序中 当用户将信息添加到文本字段时 该信息会保存到 4 个选项卡的表格视图控制器中 第一个选项
  • 如何为现有核心数据实体添加更多属性?

    我有一个正在使用核心数据的项目 我需要向现有实体 列 添加更多属性 列 如果我手动将属性添加到数据模型应用程序崩溃 这是由于我用来将数据插入表的上下文保存之前 请帮助 谢谢 所以我的问题是我不知道这个持久存储协调器代码去了哪里 事实证明它是
  • 如何按日期正确对从 CoreData 获取的列表进行分组?

    为了简单起见 假设我想创建一个简单的待办事项应用程序 我的 xcdatamodeld 中有一个实体 Todo 其属性id title and date 以及以下 swiftui 视图 如图所示的示例 import SwiftUI struc
  • 在 iOS 应用程序中处理数据(选择什么?NSData、CoreData、sqlite、PList、NSUserDefaults)

    当我开发 iPhone 应用程序 时间跟踪器 待办事项列表等 时 我永远不知道处理数据的最佳方式是什么 有一次我使用了 plist 下次使用 sqlite 或 CoreData 您如何决定什么最适合您的项目 只谈数据管理 例如 如果您想开发
  • 保存时出现 iphone 核心数据未解决的错误

    尝试保存时 我从核心数据中收到一条奇怪的错误消息 但问题是错误不可重现 在执行不同任务时 它会在不同时间出现 错误消息 Unresolved error Domain NSCocoaErrorDomain Code 1560 UserInf
  • NSUndoManager 会撤消后台发生的更改吗?

    我有一个编辑视图控制器 我正在使用 NSUndoManager 它是我的持久性存储 核心数据项目 的一组 我的应用程序的功能之一是与外部服务器同步 我想知道的是 如果我正在视图中编辑某些内容 同时应用程序正在与服务器同步 如果我改变主意并决
  • 关系上的核心数据属性?

    我刚刚开始使用核心数据 我有一个Headache实体和一个Medication实体 头痛和药物之间存在多对多的关系 当您加重头痛时 您可以选择多种药物 我希望能够指定这些药物的数量 我对 MySQL 更熟悉 您可以在其中创建一个数据透视表
  • 删除 Swift 3 中 Core Data 实体中的所有数据

    有没有办法批量删除核心数据中所有实体中存储的所有数据 我在某处读到 在 iOS 9 或 10 中 苹果引入了一种批量删除的方法 但我似乎找不到任何关于它的好信息 最终 我只需要一个遍历实体并删除其中所有数据的函数 看起来它应该很简单 但事实
  • Xcode 4 Core Data:如何使用在数据模型编辑器中创建的获取属性

    如何在 Xcode 4 中实现获取的属性 Here is an example of two entities a book and a page 我按照此处的指南创建了一个获取的属性 该属性使用变量 FETCH SOURCE 引用来自源实
  • NSManagedObject 的 Xcode 9 构建问题:Date 与 NSDate

    Xcode 9 生成不同的代码Date模拟器与设备中实体的类型属性 我有codegen功能下Class set to category extension在核心数据中 直到 Xcode 8 3 最新 一切都工作正常 NSDate总是 下面是
  • 现有的和未输入错误的密钥的 NSUnknownKeyException

    我得到以下输出 Terminating app due to uncaught exception NSUnknownKeyException reason
  • 为什么这个谓词格式会变成 '= nil'

    有人建议这个线程 https stackoverflow com questions 40686005 nspredicate crash after swift 3 migration与我的问题完全相同 但是 我的应用程序没有崩溃 并且我
  • 错误:更改核心数据模型后架构armv7的重复符号

    我有一个使用核心数据框架的应用程序 我工作得很好 我刚刚更改了数据模型 向一个实体添加一个属性 当我尝试构建它时 出现错误 duplicate symbol OBJC METACLASS AccountFolder in Users XXX
  • 带有 Core Data 对象的动态 UITableView 高度

    过去几天我一直在试图解决一个谜团 即为什么我的批处理大小为 20 的 NSFetchedResultsController 总是在获取完成后立即错误 即加载到内存中 我的所有对象 从而导致请求需要约 20 秒 事实证明 这是因为在我的 he

随机推荐