iCloud:获取文件的现有公共URL

时间:2012-04-07 22:58:55

标签: objective-c cocoa icloud

我的OS X Lion应用程序允许用户将iCloud文件提供给公众。我使用URLForPublishingUbiquitousItemAtURL

我可以在调用该方法后向用户显示该URL。但是,在文件发布(而不是更改)后,是否还有一种方法可以获得相同的URL?例如,如果用户想在另一台设备上看到该URL?

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

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

谢谢! 丹尼尔

1 个答案:

答案 0 :(得分:2)

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

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

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

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

<强>参数:

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

  • outDate - 输入时,指向日期对象变量的指针。上 输出,此参数包含项目为no之后的日期 返回的URL可用的时间更长。您可以为此指定nil 参数如果您对日期不感兴趣

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

返回值

用户可以在网址下载该项目副本的网址。如果因任何原因无法创建URL,则返回nil。

<强>讨论

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

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

来源:NSFileManagerClass @ Developer.Apple.com