Cloudkit 返回具有特定字符串的记录
Posted
技术标签:
【中文标题】Cloudkit 返回具有特定字符串的记录【英文标题】:Cloudkit returning records with a specific string 【发布时间】:2016-04-17 15:37:17 【问题描述】:在我的项目中,使用 CloudKit 记录类型“用户”(我也使用其他记录类型名称进行了测试),我创建了一个带有电子邮件字段的记录。
我正在尝试准确匹配该电子邮件并获取匹配的记录。我使用 IN 或 == 谓词(用于单个或电子邮件列表)来执行此操作。
let query = CKQuery(recordType: "User", predicate: NSPredicate(format: "email IN %@", emails))
let query = CKQuery(recordType: "User", predicate: NSPredicate(format: "email == %@", "julio_ukohgsp_chevez@tfbnw.net"))
我遇到问题的电子邮件是“julio_ukohgsp_chevez@tfbnw.net”,任何使用此电子邮件检索记录的尝试都会返回 0,但是如果我将其更改为“julio_ukohgsp_chevez@tfbnw.ne”,它将检索到 OK。
最初我认为是特殊字符,但其他字符串可以正常工作。然后我假设长度,但其他更长的字符串工作正常。
还有其他人有这个问题吗?我很难信任 CloudKit,但不明白为什么它不能匹配这个字符串。
我问了一个类似的问题,但在我获得详细信息之前,用户能够对此进行测试并得到与此字符串相同的结果。这篇文章更加简洁,并且有重新创建的步骤。
【问题讨论】:
你是说如果你把谓词改成"email == %@", "julio_ukohgsp_chevez@tfbnw.ne"
(不是t
),那么你会得到预期的结果吗?如果是这样,那么您真的确定数据库中的值实际上不是julio_ukohgsp_chevez@tfbnw.ne
?
是的,我 100% 确定。这很奇怪。我检查了很多次并手动输入。我可以尝试您的特定字符串,但即使替换任何 1 个字符也有效。
我也有同样的问题。你有什么发现吗?
是的!我开始使用转义符和 Unicode 字符编号对电子邮件字符串进行编码。如果我显示它们,我只需要先解码它们。信用:disqus.com/home/discussion/hackingwithswift/…
【参考方案1】:
试试这个:
let predicateString = "email IN '\(emails)'"
let predicate = NSPredicate(format: predicateString)
【讨论】:
以上是关于Cloudkit 返回具有特定字符串的记录的主要内容,如果未能解决你的问题,请参考以下文章
我如何通过其记录名称查询 CloudKit 以获取特定记录?