objective-c - 将 .plist 文件与 iCloud 同步

标签 objective-c xcode macos cocoa icloud

我正在尝试弄清楚如何同步我在 Mac 沙盒应用程序的“应用程序支持”文件夹中的 .plist 文件。我知道我可以使用 iCloud 键值存储,但每个应用程序有 64KB 的限制,这可能会或可能不会受到影响,具体取决于用户向应用程序添加了多少东西!

我已经尽可能多地阅读了 Apple 文档,但我仍然很困惑 :(

有人做过类似的事情吗?

谢谢

最佳答案

您应该创建一个 UIDocument 的子类,并将其与无处不在的目录一起使用。

有 2 个方法负责处理读/写。阅读时调用这个:

- (BOOL)loadFromContents:(id)contents ofType:(NSString *)typeName error:(NSError **)outError

写作时的这个:

- (id)contentsForType:(NSString *)typeName error:(NSError **)outError

所有打开/保存操作都会自动调用,您无需执行任何操作。但是,有些方法可以强制打开/保存。打开时调用:

- (void)openWithCompletionHandler:(void (^)(BOOL success))completionHandler

/* --- EXAMPLE --- */

MyDocument *doc = [[MyDocument alloc] initWithFileURL:ubiquitousFileURL];
[doc openWithCompletionHandler:^(BOOL success) {
    if (success) {
        // do sth
    } else {
        // handle error
    }
}];

...保存时这样:

- (void)saveToURL:(NSURL *)url forSaveOperation:(UIDocumentSaveOperation)saveOperation completionHandler:(void (^)(BOOL success))completionHandler

/* --- EXAMPLE --- */

MyDocument *doc = [[MyDocument alloc] initWithFileURL:ubiquitousPackage];

[doc saveToURL:[doc fileURL] forSaveOperation:UIDocumentSaveForCreating completionHandler:^(BOOL success) {
    if (success) {
        // do sth
    } else {
        // handle error
    }
}];

网上有很多教程,下面是我学习时使用的一些例子:

UIDocument Class Reference也可能有所帮助。

关于objective-c - 将 .plist 文件与 iCloud 同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8630361/

相关文章:

ios - UIGraphicsGetImageFromCurrentImageContext() - 内存泄漏

ios - 未安装应用程序时启动 Web 应用程序

java - 如何在 Mac OS 上设置 Appium 以在 Android 和 iOS 设备上运行来自 JAVA 类的自动化测试

javascript - 防止在 Mac 上的 Safari 中拖动滚动

iphone - 用于剥离 HTML 标记的 NSRegularExpression

objective-c - 为什么objectValueForTableColumn对outlineView被调用这么多次?

c - 如何在 Mac OS 上安装包含可选字符串函数的 C11 编译器?

ios - 如何解决 iOS 后台应用程序获取无法正常工作的问题?

ios - ios中UITextView添加背景图片

macos - calloc 或 malloc 可以用于在 OSX 中仅分配物理内存吗?