gpt4 book ai didi

swift - 服务器记录中的 CKAsset 不包含 fileURL,甚至无法检查 nil

转载 作者:搜寻专家 更新时间:2023-10-31 21:47:13 26 4
gpt4 key购买 nike

当我使用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com