问题标签 [ckquery]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - 在 CloudKit 中使用比较谓词进行查询
我在Cloudkit中有一些CKRecords,记录有两个int类型的属性,可能称为'cost'和'price',我想查询'cost'>'price'的记录,但是当我写一个时应用程序崩溃了像这样查询:
这是 Xcode 给出的崩溃信息:
由于未捕获的异常'CKException'而终止应用程序,原因:'无效的谓词,无效的右表达式,不是函数表达式
请帮助,提前谢谢。
arrays - Swift 谓词仅匹配值数组中的第一个值
我有一个类Download
作为CKQueryOperation
. 其中一个 inits 允许我使用一组值构建我的谓词:
当我测试它时,query
只匹配数组中的第一个值。因此,如果queryValues = [testValue0, testValue1]
我有一个字段匹配的记录,testValue0
并且我有第二个匹配的记录testValue1
,则只会发现第一条记录。如果我切换订单,则另一条记录会被识别。
我可以使用数组创建谓词但只有第一个值匹配,这似乎很奇怪。文档说值是按照它们出现的顺序替换的,但它不应该继续移动到第二个值吗?
对于更多上下文,每条记录都存储在一个单独的数据库中(私有与公共),如果param 为 nil ,我的Download
班级会启动两个独立CKQueryOperations
的两个都依赖的数据库。无论哪个操作失败,最终都找不到与第一个值匹配的结果,然后在检查第二个值之前放弃。query
database
如果需要,我可以包含“下载”的完整代码和失败的单元测试。
swift - 具有多种记录类型的 Swift CKQuery
所以我在查询特定记录类型和解析它们的数据方面做得很好。我不知道的是如何在所有记录类型中搜索,例如,今天修改的所有内容,无论它是什么记录类型。
想法?
ios - CloudKit Notifications not delivered to all devices
I have the problem that CloudKit notifications are not delivered to all devices when my app was started on the device. However, everything works fine if the app has been started from XCode.
In specific:
- Device A saves a record
- On the server, there is a CKQuerySubscription that fires a notification on record change
- According to the server log, this notification gets pushed
- However, device B will only receive the notification if the app got started from XCode. It will not if it got started from the home screen.
- To make it perfect: If I save a record on device B (no matter if the app got started from Xcode or home screen), device A will always receive the notification.
Would be glad to receive any hint notifications ;-) Udo
ios - 在 CloudKit 谓词中使用包含比较数组的 CONTAINS 或 ANY
我尝试使用NSCompoundPredicate(orPredicateWithSubpredicates:)
withCloudKit
NSPredicate
但后来我在 Apple 的文档中读到OR
不支持比较谓词,CloudKit
所以我遇到了障碍。
我有一个数组CKReferences
,我需要查看 a Record-type
of是否Reference list
包含这些引用。
我正在为如何组装谓词本身而苦苦挣扎,因为我试图避免completionBlock
.
假设我有以下引用数组:
我尝试了以下方法,但没有成功,因为它只查找数组的第一个对象,而不是整个数组。
在这里,如果我打印predicate
它会打印:
表名包含CKReference:0x600000229c40;20B54862-46CC-405F-BAE8-0DC8D3A52F78:(_defaultZone: defaultOwner )>
如您所见,它只查找数组中的第一个对象。
如果我ANY
在谓词中使用运算符,它可能会起作用,例如:
但我的问题是如何构建该谓词,因为refs
数组是动态的,我不知道它可能包含多少个对象,因此我不知道如何构建对数组的predicate args
访问。[0], [1], ...
refs
你有什么解决方法吗?还是解决此问题的最佳方法?
谢谢你。
编辑
我想出了解决这个问题的方法,但我不知道这是否是最有效的方法,所以我仍然愿意接受答案和意见。
这是我的临时解决方案:
nspredicate - CloudKit 查询:在日期之后且不在数组中
我正在尝试从 CloudKit 查询记录,这些记录要么modificationDate
比我在本地拥有的记录更新,要么可能根本没有。
我已经拥有的记录存储在recordNames
. 日期是date
。
我可以用这样的两个谓词来做到这一点:
但是,当我尝试将其组合为复合OR
谓词或将它们组合成单个谓词时,出现错误:
无效谓词... CKErrorDomain Code=12... 不是比较谓词,ck_isComparisonError=true
我在文档OR
中看到不允许做谓词。我希望不必在这里进行两个单独的查询。关于如何解决这个问题的任何想法?
cloudkit - CloudKit 服务器拒绝请求:未知字段记录名称
我CKQuery
在 Swift 4 中这样做:
...我得到了这个CKError
:
CKError(_nsError:CKError 0x60000024dce0:“服务器拒绝请求”(15/2000);服务器消息=“未知字段'recordName'”;uuid = BCD7C8DA-04B0-4422-8A24-F6479D234706;容器ID =“...”)
查询时是否需要使用特殊键recordName
?
ios - CloudKit“订阅重复”错误 - 获取 SubscriptionId
我正在尝试将 a 保存CKQuerySubscription
到公共数据库 - aCKError
返回带有以下信息:
属性ancestorRecord
,clientRecord
和对象serverRecord
都是。CKError
nil
如何从此错误(即C82E82EF-F373-4D75-A465-65364D8FEB12
)中获取服务器上存在的查询的 ID。有没有我想念的财产?
swift - 将 Cloudkit 资产用作 UIimage
我将图像作为资产保存在 CloudKit 中。每条记录还有其他属性。我可以收集记录并使用其他属性,但我无法在我的 ImageView 中使用该资产。我是 Swift 编程的新手,因此我收到的错误没有任何意义。
我得到的错误是在这一行:
它说:
我试图从主线程中删除它,但我收到了同样的错误。