iCloud基础知识和代码示例
从目前的情况来看,这个问题不适合我们的问答形式。我们希望答案能得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 9年前关闭。 作为一个初学者,我正在为iCloud奋斗。有一些示例,但是它们通常都非常详细(在开发人员论坛上,有一个针对iCloud和CoreData的示例非常庞大)。在苹果的文档都OK,但我仍然无法看到大局。因此,请允许我,其中一些问题是非常基本的,但可能很容易回答。 上下文:我有一个非常简单的iCloud应用程序正在运行(下面是完整的示例代码)。仅向用户显示一个UITextView,并且他/她的输入保存在一个名为text.txt的文件中。 txt文件被推送到云中,并可供所有设备使用。完美运行,但是: 主要问题:不使用iCloud的用户呢? 启动应用程序时(请参见下面的代码),我会检查用户是否启用了iCloud。如果启用了iCloud,则一切正常。该应用程序继续运行,并在云中查找text.txt。如果找到,它将加载它并显示给用户。如果在云中找不到text.txt,它将仅创建一个新的text.txt并将其显示给用户。 如果用户未启用iCloud,则不会发生任何事情。如何使非iCloud用户仍然可以使用我的文本应用程序?还是我只是忽略它们?我是否需要为非iCloud用户编写单独的功能?即我仅从documents文件夹中加载text.txt的函数? 苹果写道: 以与对待应用程序沙箱中所有其他文件相同的方式对待iCloud中的文件。 但是,就我而言,再也没有“普通”应用程序沙箱了。在云中。还是我总是先从磁盘上加载text.txt,然后与iCloud检查是否还有最新信息? 相关问题:文件结构-沙箱与云 也许我的主要问题是对iCloud应该如何工作的根本误解。创建UIDocument的新实例时,我将不得不覆盖两个方法。首先- (BOOL)loadFromContents:(id)contents ofType:(NSString *)typeName error:(NSError **)outError从云-(id)contentsForType:(NSString *)typeName error:(NSError **)outError中获取文件,然后将文件添加到云中。 我是否必须合并单独的功能,这些功能也会将text.txt的本地副本保存到我的沙箱中?这对非iCloud用户有效吗?据我了解,iCloud会自动保存text.txt的本地副本。因此,我不需要将任何内容保存到应用程序的“旧”沙箱中(即,它曾经在iCloud之前的旧年代使用)。目前,我的沙箱完全是空的,但我不知道这是否正确。我是否应该在其中保留另一个text.txt副本?感觉就像混乱的数据结构...因为云中有一个text.txt,设备上的iCloud沙箱中有一个text.txt(即使我离线也可以使用),而旧的沙箱中的第三个则是。我的应用程式... 我的代码:一个简单的iCloud示例代码 这大致基于我在开发人员论坛和WWDC会话视频中找到的示例。我将其剥离到最低限度。我不确定我的MVC结构是否良好。该模型位于AppDelegate中,并不理想。欢迎提出任何改善建议。 编辑:我试图提取主要问题并将其发布[此处]。4 概述: 最重要的一点是从云中加载text.txt: // AppDelegate.h // iCloudText #import <UIKit/UIKit.h> @class ViewController; @class MyTextDocument; @interface AppDelegate : UIResponder <UIApplicationDelegate> { NSMetadataQuery *_query; } @property (strong, nonatomic) UIWindow …