NSURLBookmarkCreationPreferFileIDResolution无效

时间:2013-05-17 17:29:55

标签: macos cocoa nsurl

我正在尝试创建一个书签,即使在文件被移动或重命名后也能找到该文件。在这里,我创建&存储~/Desktop/file.txt的书签:

- (void) writeBookmark {
    NSURL* urlToBookmark = [NSURL fileURLWithPath:[@"~/Desktop/file.txt" stringByExpandingTildeInPath]] ;
    NSData* bookmarkData = [urlToBookmark bookmarkDataWithOptions:NSURLBookmarkCreationPreferFileIDResolution  includingResourceValuesForKeys:nil  relativeToURL:nil  error:nil ] ;
    [[NSUserDefaults standardUserDefaults] setObject:bookmarkData forKey:@"bookmarkData"] ;
    [[NSUserDefaults standardUserDefaults] synchronize] ;
}

在这里,我阅读了存储的书签:

- (void) readBookmark {
    NSData* bookmarkData = [[NSUserDefaults standardUserDefaults] objectForKey:@"bookmarkData"] ;
    NSURL* urlFromBookmark = [NSURL URLByResolvingBookmarkData:bookmarkData  options:0  relativeToURL:nil  bookmarkDataIsStale:nil  error:nil] ;
    NSLog(@"%@", [urlFromBookmark.path stringByAbbreviatingWithTildeInPath]) ;
}

我连续运行了writeBookmarkreadBookmark,并按预期工作,记录~/Desktop/file.txt

然后我将file.txt从~/Desktop移至~/Music,然后运行readBookmark。它按预期工作,记录~/Music/file.txt

最后,我在~/Desktop/file.txt创建了一个新文件并运行readBookmark。它没有按预期记录~/Music/file.txt,而是记录~/Desktop/file.txtNSURLBookmarkCreationPreferFileIDResolution不应该使NSURL始终指向创建它的原始文件,无论原始文件的路径中是否存在不同的文件?

我正在为OS X 10.8开发,而不是沙盒。

0 个答案:

没有答案