4

我的 OS X Lion 应用程序允许用户公开 iCloud 文件。我用URLForPublishingUbiquitousItemAtURL它。

调用该方法后,我可以将该 URL 呈现给用户。但是有没有办法在文件发布(而不是更改)后获取相同的 URL?例如,如果用户想在另一台设备上查看该 URL?

是的,我可以URLForPublishingUbiquitousItemAtURL再打电话,但我怎么知道文件是否已经发布?

我的第一个想法是在 iCloud 中创建某种键值数据,其中包含所有文件的 URL(具有公共 URL)。但我不敢相信没有更简单的方法......

谢谢!丹尼尔

4

1 回答 1

2

如果我正确理解您的问题,您想检索或创建 iCloud 中文件的公共 URL。

如果是这种情况,则使用 URLForPublishingUbiquitousItemAtURL:expirationDate:error:

它返回一个 URL,该 URL 可以通过电子邮件发送给用户以下载文件。

- (NSURL *)URLForPublishingUbiquitousItemAtURL:(NSURL *)url expirationDate:(NSDate
**)outDate error:(NSError **)error

参数:

  • url - 指定要共享的云中项目的 URL。URL 必须以从 URLForUbiquityContainerIdentifier:(第 61 页)方法返回的基本 URL 为前缀,该方法对应于项目的位置。

  • outDate - 在输入时,指向日期对象变量的指针。在输出时,此参数包含该项目在返回的 URL 中不再可用的日期。如果您对日期不感兴趣,可以为此参数指定 nil

  • error - 在输入时,指向 NSError 对象的变量的指针。如果发生错误,则此指针设置为包含有关错误信息的 NSError 对象。如果您不想要错误信息,您可以为此参数指定 nil。

返回值

一个 URL,用户可以使用该 URL 在 url 下载项目的副本。如果由于任何原因无法创建 URL,则返回 nil。

讨论

此方法创建指定文件的快照,并将副本放置在临时 iCloud 位置,其他用户可以使用返回的 URL 访问该位置。快照反映了生成 URL 时文件的内容,并且在对用户 iCloud 存储中的原始文件进行后续更改时不会更新。快照文件在指定的 URL 上一直可用,直到 outDate 参数中指定的日期,之后它会被自动删除。您的应用程序必须有权访问网络才能使此调用成功。

因此,如果如您所说,您需要检查它是否已成功发布,请检查错误。

来源:NSFileManagerClass@Developer.Apple.com

于 2012-04-18T20:46:39.760 回答