【问题标题】:NSUserDefaults not getting preference values from the preferences cache?NSUserDefaults 没有从首选项缓存中获取首选项值?
【发布时间】:2014-07-20 17:44:51
【问题描述】:

我正在使用 NSDefaults 并尝试在查找器中读取查找器收藏夹列表。此代码在命令行实用程序中返回该列表:

#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSUserDefaults *userDefaults = [[NSUserDefaults alloc] init];
        [userDefaults addSuiteNamed:@"com.apple.sidebarlists"];

        NSDictionary *list = [userDefaults dictionaryForKey:@"favoriteitems"];
        NSLog(@"%@", list);  
        }
    return 0;
}

不幸的是,返回的列表似乎已经过时了。

例如,如果我通过 finder 从 finder 收藏夹列表中删除一个条目,然后重新运行我的一小段代码,则删除的条目仍保留在列表中。在系统将 UserDefaults 缓存与磁盘同步之前,这似乎是正确的(例如,我可以通过重新启动计算机来强制执行此操作)。

有没有办法强制可可从首选项缓存中读取,而不是从磁盘中读取?

【问题讨论】:

    标签: objective-c cocoa xcode5


    【解决方案1】:

    不要这样做。有一个受支持的 API,尽管它只记录在标题中。请参阅 /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSSharedFileList.h 中的 LSSharedFileList API。您可能需要标识符为 kLSSharedFileListFavoriteItems 的列表。

    【讨论】:

      【解决方案2】:

      您可以使用 synchronize 方法强制同步。我不知道这是否会解决您的问题。

      【讨论】:

        猜你喜欢
        • 2014-03-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多