【问题标题】:Syncing a .plist file with iCloud将 .plist 文件与 iCloud 同步
【发布时间】:2012-01-27 15:47:29
【问题描述】:

我正在尝试解决如何同步我的 Mac 沙盒应用程序的“应用程序支持”文件夹中的 .plist 文件。我知道我可以使用 iCloud 键值存储,但每个应用程序有 64KB 的限制,这可能会或可能不会达到,具体取决于用户添加到应用程序的数量!

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

有人做过类似的事情吗?

谢谢

【问题讨论】:

    标签: objective-c xcode macos cocoa icloud


    【解决方案1】:

    您应该创建一个 UIDocument 的子类并将其与普遍存在的目录一起使用。

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

    - (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 也可能有帮助。

    【讨论】:

    • 如果我没记错的话,那是针对 iOS 的,不能在 Mac 上这样做 :( 我发现的大多数教程都是针对 iOS 的,几乎没有任何与 Mac 相关的内容
    • 所以你可以用NSDocument来做这个,我想...看看developer.apple.com/library/mac/#documentation/Cocoa/Reference/…
    • 我确实尝试过,但它不像我想象的那样与 uidocument 相似:/
    • initWithFileURL 在 NSDocument 中不可用
    猜你喜欢
    • 1970-01-01
    • 2011-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-25
    • 1970-01-01
    • 2016-06-30
    相关资源
    最近更新 更多