0

我正在开发一个小型实用程序,可以将 plist 文件复制到 Dropbox,以便我可以在两台计算机之间同步该 plist 文件。在 10.9 中,对首选项的更改会被缓存,并且仅在应用程序或 cfprefsd 请求时才写入磁盘。

我是否可以使用 CFPreferencesAppSynchronize 告诉系统将任意应用程序的新存在写入磁盘?例如,如果我想同步我的 finder 首选项,我可以让我的小应用程序调用 CFPreferencesAppSynchronize 与 finder (com.apple.finder) 相关吗?下面的代码似乎不起作用,但没有抛出错误:

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here..
       NSString *stringApplicationID = @"com.apple.finder";
       CFStringRef applicationIDfinder = (__bridge CFStringRef)stringApplicationID;


       Boolean CFPreferencesSynchronize (
                                  CFStringRef applicationIDfinder,
                                  CFStringRef kCFPreferencesAnyUser,
                                  CFStringRef kCFPreferencesAnyHost
                                  );

    return 0;
}

}
4

1 回答 1

1

实际上,更改是在 10.8 中,而不是 10.9(尽管它在 10.9 中进一步更改)。没有可靠的方法来操作或与磁盘上的 plist 交互,它们纯粹是首选项系统的实现细节。

如果您想同步它们,我的建议是阅读首选项并使用 NSPropertyListSerialization 自己将它们写入保管箱同步位置。然后在连接的另一端,自己阅读它们并将它们设置在 CFPreferences 中。

于 2014-06-23T04:18:46.080 回答