问题标签 [ckasset]

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.

0 投票
1 回答
63 浏览

ios - 如何避免大CKAssets的重新传输,跟随其他数据更新

我有一个存储为 CKAsset 的大图像,作为记录的一部分,该记录还包含可能会更改的日期和其他详细信息。图像和其他详细信息都存储在我的应用程序本地。

如果我更改日期(例如)并尝试将记录重新提交给 CloudKit(通过创建新记录、设置其数据字段并使用 CKModifyRecordsOperation),则似乎 CKAsset 数据被重新上传并随后下载到所有设备。

如果我尝试不在记录中设置 CKAsset 信息,则会收到“修改某些记录失败”错误消息。

如何避免不必要的图像传输(我不担心其他数据被不必要地发送,因为它很小)?

我是否应该将 CKAsset 存储到单独的链接记录中,这样我只需要在图像更改时下载图像吗?

0 投票
3 回答
278 浏览

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

当我使用保存策略保存包含CKAsset(只是 JPG 图像)的记录时,我正在测试同步冲突 我收到错误消息。这将为我返回解决冲突的有用信息,包括我尝试保存的信息以及记录的当前服务器版本。第一个在,第二个在。CKModifyRecordsOperation.IfServerRecordUnchangedCKErrorCode.ServerRecordChangedCKErrorCKRecorderror.userInfo[CKRecordChangedErrorClientRecordKey]error.userInfo[CKRecordChangedErrorServerRecordKey]

我的问题是我正在尝试使用以下代码访问服务器记录的 CKAsset:

我不明白这怎么可能。但经过进一步调查,我打印出客户端和服务器 CKRecords,而服务器缺少“路径”属性。

客户端 CKAsset...myPhoto (修改) -> 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>

服务器 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。我希望至少能够检查零。我想把它放在那里,以防它帮助其他人。

0 投票
0 回答
87 浏览

swift - CloudKit 不会播放 CKAsset Song Swift 3

我有一首歌曲作为 CKAsset 存储在 CloudKit 中。我成功检索了这首歌并且没有出现错误,但它就是无法播放。任何帮助将不胜感激,谢谢。

我的 AVPlayer 在类中懒惰地实例化。

当我开始播放歌曲时,我收到消息(如预期的那样):

Song at file:///private/var/mobile/Containers/Data/Application/E34BE227-86DD-4AD7-A3C1-6A0610CE8C39/Library/Caches/CloudKit/6e22c352bc4bdeb0b75d42a0d681d67c69eeaad4/Assets/6BD84822-D039-4228-A5E9-59CB281BB964.0182fa97976e7d7b941bb8d8790ea75c6d3b72c302开始了。

不幸的是,这首歌没有播放。

0 投票
1 回答
407 浏览

ios - 从 Cloudkit 获取音乐文件

我尝试将用于获取图像资产的代码转换为获取 cloudkit 上的 mp3 文件。但是,我无法计算数据部分。我正在使用这个库来播放音频。它只有一个名为“AudioPlayer”的类,所以如果我想在本地文件夹上播放音乐,声明它就足够了。

https://github.com/tbaranes/AudioPlayerSwift

0 投票
1 回答
74 浏览

ios - CKAsset 获取 PDF 并呈现在 UIWebView Swift3 中

A 有一个包含课程详细信息的 CKRecord,我可以获取所有记录并在特定视图中根据需要对其进行操作。我对 CKAsset 有一点问题,它是一个 pdf。我的图像 CKAsset 获取并在 UIImageView 中显示工作正常 -

但是,当涉及到 pdf 时,我不确定如何完成代码 - 这是我的尝试,不完整(由 ??????? 表示)

我想我的问题是,我是接近还是偏离目标,如果是这样 - 任何指针?

谢谢

0 投票
2 回答
1295 浏览

ios - CloudKit 的 CKasset 文件大小限制

嗨,我们想将大尺寸视频文件上传到 CloudKit。CKAsset 有文件大小限制吗?有一个链接提到大小限制为 15 mb,但这是不正确的,因为我们尝试上传 300MB 的视频并成功上传。此外,该文档是针对云套件 Web 服务的,这是否意味着尽管云套件 JS 只能上传或下载 15mb 资源?

https://developer.apple.com/library/content/documentation/DataManagement/Conceptual/CloutKitWebServicesReference/PropertyMetrics/PropertyMetrics.html

0 投票
3 回答
1957 浏览

ios - NSData - 写入临时文件/目录

我有点迷失在我的追求——

  1. 下载 CKAsset(PDF 文件)
  2. 分配临时文件名
  3. 将CKAsset的内容写入文件名

我已经设法下载了 CKAsset 并在 UIWebView 中显示了内容,但是我在第 2 步和第 3 步中遇到了麻烦,我有一个来自字符串的文件名,尽管尝试了各种 WriteToFile 组合,但我收到了错误。

我的代码是这样的:

此版本出现错误 -

无法使用类型为“(URL?,原子:Bool,编码:String.Encoding,错误:inout NSError?)”的参数列表调用“writeToFile”

一旦创建的临时文件将被传递给 UIActivityViewController,以打印/电子邮件/空投 PDF,只有一个 CKAsset 名称,UIActivityViewController 无法将文件类型与任何用户安装的应用程序相关联,保存以供打印。

0 投票
2 回答
1311 浏览

ios - 将资产列表(数组)保存到特定的 CKRecord

我在 CloudKit 后端创建了一个 CKRecord 类型,其中包含一些与该类相关的属性。

我有字符串属性、字节和资产列表属性,所以存储一些图像(与单个记录相关的多个图像)。

资产清单

现在我正在尝试存储一些图像,然后填充属性,然后尝试将其保存到 CloudKit,但它不起作用。

代码如下:

如果我只保存字符串,一切都会完美运行,但对于图像,它不会保存记录。

我知道追加可能有任何问题,或者我必须以其他方式保存数组,或者我不应该将其保存为 CKRecordValue。

您对如何实现这一目标有任何提示吗?

谢谢

0 投票
0 回答
128 浏览

ios - 在 iOS 9 上访问 Swift 3 上的 CKAsset fileURL 属性时崩溃

在使用 CKFetchRecordChangesOperation 获取记录时,在 iOS 9 设备(或 macOS 10.11)上使用 Swift 3 访问 CloudKit 上的同步资产的 CKAsset fileURL 属性会崩溃并出现错误URL._unconditionallyBridgeFromObjectiveC(NSURL?) -> URL ().

我检查了 CloudKit Dashboard 上的记录,它的资产值设置正确。在 iOS 10 或 macOS 10.12 上,它按预期工作。

CKAsset 对象上的 iOS 10 和 iOS 9 之间的区别在于,在 iOS 10 上,我的资产有一个路径值path=~/Library/Caches/CloudKit/.../Assets/...,而 iOS 9 对象中缺少该值。

更新:使用 CKAsset 上的 Obj-C 类别从 fileURL 获取图像修复了崩溃,但不是问题,fileURL 仍然为零并且无法同步工作。

更新 2:一位 Apple 工程师向我证实这是一个 iOS 9 SDK 错误,具有 fileURL 值的解决方法是再次单独获取每条记录,而不使用操作。

0 投票
1 回答
329 浏览

swift - 从核心数据中保存 CKAsset

我有一些像图片这样的数据,作为二进制数据存储在核心数据中,并标记为“允许外部存储”。我想将此数据写入 CloudKit。是否可以获取此数据的 URL 并将其传递给 CKAsset,或者以某种方式将此数据转换为 CKAsset,而无需将此数据重复写入某些临时文件?谢谢你。