NSPredicate'运算符'LIKE'不支持int类型'
Posted
技术标签:
【中文标题】NSPredicate\'运算符\'LIKE\'不支持int类型\'【英文标题】:NSPredicate 'Operator 'LIKE' not supported for type int'NSPredicate'运算符'LIKE'不支持int类型' 【发布时间】:2016-06-09 04:54:28 【问题描述】:我在 Swift 中遇到了 NSPredicate 格式的问题,我想创建一个比较 Int 值的谓词,其功能类似于字符串值中的“包含”或“LIKE”。
例子:
1 12 31 511如果我输入 1,那么所有数字都将返回到谓词。
这是我的代码如下:
let searchPredicate = NSPredicate(format: "id LIKE %d OR customerName contains %@", searchText, searchText)
我也试过了:
let searchPredicate = NSPredicate(format: "id contains %d OR customerName contains %@", searchText, searchText)
但以上两个都给了我错误: 'int 类型不支持运算符'LIKE''和'int 类型不支持运算符'contains'
非常感谢任何想法!提前谢谢你。
【问题讨论】:
您需要将客户编号转换为字符串 @Paulw11:你的意思是在 NSPredicate 中将“id”转换为字符串吗? 不,您需要将您的 id 作为字符串存储在数据库中。你只能在字符串上使用 LIKE 这是用于 Core Data,还是为什么需要 NSPredicate?你不能将数字存储为字符串吗? 【参考方案1】:对于int值可以直接使用“==”操作符,不需要LIKE操作符,可以使用如下谓词格式,
let searchPredicate = NSPredicate(format: "id == %d OR customerName contains %@", searchText, searchText)
如果您使用 NSNumber,请确保您使用预定义的方法(如 intValue)获得实际值,
【讨论】:
"==" 运算符将“id”与“exact”值而不是“contains”值进行比较【参考方案2】:你可以试试这个
let searchPredicate = NSPredicate(format: "id LIKE %d OR customerName contains %@", String(format: "%@",searchText), String(format: "%@",searchText))
【讨论】:
它仍然给出同样的错误:'Operator 'LIKE' not supported for type int'以上是关于NSPredicate'运算符'LIKE'不支持int类型'的主要内容,如果未能解决你的问题,请参考以下文章
Objective-C:NSPredicate LIKE 不喜欢空格。是不是有用于替换空格的转义序列?