- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
当我使用 CKModifyRecordsOperation
保存包含 CKAsset
的记录(只是一个 JPG 图像)时,我正在测试同步冲突,保存策略为 .IfServerRecordUnchanged
。我收到错误 CKErrorCode.ServerRecordChanged
。此 CKError
返回对解决冲突有用的信息,包括我尝试保存的 CKRecord
和记录的当前服务器版本。第一个在 error.userInfo[CKRecordChangedErrorClientRecordKey]
中,第二个在 error.userInfo[CKRecordChangedErrorServerRecordKey]
中。
我的问题是我正在尝试使用以下代码访问服务器记录的 CKAsset:
if let photoAsset = rec["myPhoto"] as? CKAsset {
print("PhotoAsset.fileURL: \(photoAsset.fileURL)") // BAD_ACCESS ERROR HERE
self.myPartner.photo = NSData(contentsOfURL: photoAsset.fileURL)
}
我不明白这是怎么可能的。但经过进一步调查,我打印出客户端和服务器 CKRecords,而服务器缺少“路径”属性。
client CKAsset...myPhoto (modified) -> CKAsset: 0x7b960d90; path=~/tmp/BF185B2C-7A39-4730-9530-9797E843243Aphoto, size=373959, uploadRank=0, uploadReceipt=A92Eg1qoyPG7yrg3, UUID=3C2D5DC8-4FF5-4A81-853B-395FC1C59862, referenceSignature=<012fd149 200fc600 617e3907 88763e3e 5002abbf 5b>, flags=uploaded, wrappedEncryptionKey=, signature=<0134a297 38d52f5f 9275bfba fce5b1a8 3d6b9692 d3>
server CKAsset...myPhoto = CKAsset: 0x7be700d0; referenceSignature=<015337bd 84409893 7c014f46 36248d27 ce911dc3 7a>, size=373959, uploadRank=0, UUID=DF5D2EB4-033C-49A2-AF52-6055B5A44106, wrappedEncryptionKey=<767e7cfd d1e62110 32119ee9 f6f026b3 5bcf0cc3 8053a4de>, signature=<0134a297 38d52f5f 9275bfba fce5b1a8 3d6b9692 d3>
注意 path=~/tmp/C706423B-A3E8-4051-A9B3-483C718BFBF5photo
是如何从服务器中丢失的?谁能解释一下?为了修复它,我尽量避免接触服务器记录中的 CKAsset。我想至少能够检查是否为零。我想把它放在那里,以防它对其他人有帮助。
最佳答案
由于访问 fileURL
时崩溃,这很可能是框架错误。可能是由于 CKRecord
被埋在字典中造成的疏忽。我只是用常规的 fetch(withRecordID:)
跟进它。
关于swift - 服务器记录中的 CKAsset 不包含 fileURL,甚至无法检查 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41072510/
我有一些数据,比如图片,作为二进制数据存储在核心数据中,并标记为“允许外部存储”。我想将此数据写入 CloudKit。是否可以获取此数据的 URL 并将其传递给 CKAsset,或者以某种方式将此数据
当我将 CKAsset 保存到服务器时,它是否可以在所有设备上使用?如果在某个设备上我不需要其中一项 Assets 怎么办?那里也会占用空间吗? 最佳答案 这取决于。如果设备读取相应的 CKRecor
当我获取包含字符串(或其他)字段的记录时,不到 1 秒: let query = CKQuery(recordType: "Messages", predicate: NSPredicate(for
将我的表格单元格的图像设置为我的“图片”时,我收到此代码中的错误。 func tableView(_ tableView: UITableView, cellForRowAt indexPath:
我正在使用下面的代码来获取 CKAsset 列表,但它一直崩溃并告诉我:“ fatal error :在展开可选值时意外发现 nil” 但是 Assets 列表在CloudKit 仪表板。 你知道我错
我有一个图像(UIImage 和它的 url),我试图将它作为 CKAsset 发送到 CloudKit,但我遇到了这个错误:Terminating app due to uncaught excep
您好,我们想将大型视频文件上传到 CloudKit。 CKAsset 有文件大小限制吗?有一个链接提到大小限制为 15 MB,但这不正确,因为我们尝试上传 300MB 的视频并且已成功上传。另外,该文
我想与未使用我的应用程序的人共享公共(public)数据库中的 CloudKit Assets 。在 CKAsset 类中,只有一个 fileURL 属性,它指向一个本地文件,因此没有给出 URL。
我有一个图像(UIImage 和它的 url),我试图将它作为 CKAsset 发送到 CloudKit,但我遇到了这个错误:Terminating app due to uncaught excep
我在 cloudkit 数据库中有一个可选图像(已检查数据库,如果我在测试中添加它,图像就在那里)。我创建了一个类,将记录字段初始化为我在 tableview 中使用的变量。我也有一个自定义单元格。但
我正在编写的应用程序将允许人们存储多张照片,并将它们与单个对象相关联。 我想我会使用 CloudKit 将这些图像存储为 CKAssets。 在 CloudKit 中,除了其他属性列表类型之外,我还可
我正在使用 CloudKit,在加载数据时,我会检查代码中 CKAsset 是否为 nil,例如: let img = result.value(forKey: "Picture") as! CKAs
如何检查使用 CKAsset 存储的图像在 CloudKit 中是否发生了变化? CKNotification 文档说了 desiredKeys: 数组中最多可以包含三个键。 对于您指定的键,允许的值
有没有办法将 CKAsset 照片异步加载到 UICollectionView 中?眼下,在 CKDatabase performQuery 的 queryCompletionHandler 中,我得
我正在加载一个图像 TableView ,这些图像是作为 CKAssets 从公共(public) CloudKit 数据库中获取的。但是,在将正确的图像加载到自定义 UITableview 单元格的
我也在 CKAsset 的客户端和 fileUrl 上缓存 CKRecord。 fileUrl 可以不时更改吗? Assets /数据本身没有变化。 最佳答案 Assets 的 fileURL 不会改
我正在开发一个应用程序,该应用程序使用 CloudKit 将图像文件存储和检索为 CKAsset 对象。通常,这很好用,我喜欢 CloudKit 的小学习曲线。不过,我会定期遇到这个特殊问题,即图像要
我正在使用 CloudKit 作为我的 iOS 应用程序的服务器后端。我用它来存放一些相对静态的数据以及一些图像 (CKAsset)。当我真正从公共(public)数据库中获取这些 Assets 时,
我有一个简单的 TableView,其中包含从 CloudKit 中提取的文本和图像。我试图在选择时将该数据传递给detailViewController,我可以获取文本,但我坚持通过prepareF
我在数组中有一个 CKRecords 数组。使用表格,我希望使用 SDWedImage 作为我的记录中一个 CKAsset/Image 的缓存。 我试过的代码: override func table
我是一名优秀的程序员,十分优秀!