我正在尝试创建一个书签,即使在文件被移动或重命名后也能找到该文件。在这里,我创建&存储~/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开发,而不是沙盒。