iOS中使用iCloud一些需要注意的地方(Xcode7.2)

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处.
如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;)


在自己的App中如何使用iCloud有很多文章可以查阅,这里把本猫遇到的一些问题着重提一下,希望可以帮助到初次接触的童鞋们.

1.使用TeamId无效的解决

一些文章指出在调用NSFileManager的实例方法URLForUbiquityContainerIdentifier:时,可以传递一个组合的容器ID,也可以传递nil.如果传递nil则表示取得iCloud中第一个容器的URL(如果你有多个容器的话).

如果传递一个实际的容器ID则apple希望你按照TeamID.BundleID的组合方式生成该ID(这是某本书上说的).但实际操作下来,用此方法返回的容器URL总是为nil,TeamID是从开发者网站中的开发者ID描述页面获得的.

但是如果按上所述参数传递nil则可以获取到容器URL.

这时打开Xcode为你生成的.entitlements文件可以看到其中的TeamID不是所谓的TeamID,而仅仅是字符串”iCloud”:

iOS中使用iCloud一些需要注意的地方(Xcode7.2)

所以我们在代码中将TeamID改为iCloud就可以了,另外我尝试直接在Xcode的Capabilities中修改其前缀:

iOS中使用iCloud一些需要注意的地方(Xcode7.2)

但是编译时提示出错,大概意思是iCloud前缀必须以iCloud开头.

但我不排除有其他方法可以做到修改该前缀.

2.如何内在iOS设备上看到iCloud中实际的文件名

大家知道在iOS设备上,比如iPhone的iCloud设置里可以看到每个使用iCloud的App,其中我们可以看到App在iCloud中保存的文件.

但是有些童鞋可能发现自己写的App在iCloud中看不到对应的文件名,而只是显示一个笼统的大小:

iOS中使用iCloud一些需要注意的地方(Xcode7.2)

那么如何让其显示特定的文件呢?

其实很简单,只要将你的文件夹或是文件放到iCloud容器根目录下的Documents文件夹下即可.

iOS中使用iCloud一些需要注意的地方(Xcode7.2)

如上图所示,我在Documents文件夹中建立了MyString.txt文件和Tools文件夹.