3

我正在尝试创建一个书签,即使在文件被移动或重命名后也能找到它。在这里,我创建并存储一个书签~/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]) ;
}

我连续运行,它按预期工作,writeBookmark记录。readBookmark~/Desktop/file.txt

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

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

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

4

0 回答 0