objective-c – iCloud:获取文件的现有公共URL

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

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

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

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

谢谢!
丹尼尔

最佳答案 如果我正确理解您的问题,您想要在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在URL上下载项目的副本.如果由于任何原因无法创建URL,则返回nil.

讨论

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

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

资料来源:NSFileManagerClass @ Developer.Apple.com

点赞