앞서 언급했듯이 NSDocument
아키텍처는 이미 최근 문서 목록을 유지 관리합니다. 기본 폴더를 살펴보면 *.LSSharedFileList.plist
환경 설정 파일에이 데이터가 저장됩니다.
속성 목록 편집기 또는 Xcode 4에서 이러한 파일을 살펴보면 별칭 (또는 "북마크") 데이터를 사용하는 것이 영구적 인 방법으로 파일에 대한 참조를 저장하는 기본 방법을 알 수 있습니다. Windows/* nix 배경에서 오는 경우 별칭 데이터는 이름이 바뀌거나 이동 된 경우에도 항목을 추적 할 수 있습니다.
최근 파일 목록을 직접 저장해야하고 OS X 10.6 이상이 필요한 경우 NSURL
에있는 북마크 데이터 기능과 함께 NSUserDefaults
을 사용할 수 있습니다.파일을 엽니 다 당신의 방법에서
, 당신은 이런 식으로 뭔가를 할 수 :
- (void)awakeFromNib {
recentAppURLs = [[NSMutableArray alloc] init];
NSArray *recentAppBookmarks =
[[NSUserDefaults standardUserDefaults] objectForKey:MDRecentDocumentsKey];
for (NSData *bookmarkData in recentAppBookmarks) {
NSURL *resolvedURL = [NSURL URLByResolvingBookmarkData:bookmarkData
options:NSURLBookmarkResolutionWithoutUI|NSURLBookmarkResolutionWithoutMounting
relativeToURL:nil bookmarkDataIsStale:NULL error:NULL];
if (resolvedURL) [recentAppURLs addObject:resolvedURL];
}
}
:
NSString * const MDRecentDocumentsKey = @"MDRecentDocuments";
- (void)application:(NSApplication *)sender openFiles:(NSArray *)filenames {
// assume single item
NSURL *URL = [NSURL fileURLWithPath:[filenames objectAtIndex:0]];
NSMutableArray *recentAppBookmarks =
[[[[NSUserDefaults standardUserDefaults] objectForKey:MDRecentDocumentsKey]
mutableCopy] autorelease];
// assume 20 item limit
if ([recentAppBookmarks count] + 1 > 20) {
[recentAppBookmarks removeLastObject];
}
NSData *data = [ bookmarkDataWithOptions:0 includingResourceValuesForKeys:nil
relativeToURL:nil error:NULL];
[recentAppBookmarks insertObject:data atIndex:0];
[[NSUserDefaults standardUserDefaults] setObject:recentAppBookmarks
forKey:MDRecentDocumentsKey];
}
를 앱 시작시 최근 파일 목록을 얻으려면, 당신이 뭔가를 할 수 있습니다 그렇지 않으면 OS X 10.5 이전 버전과의 호환성이 필요하다면 NSString
in this answer에 몇 가지 카테고리를 게시했습니다.
그 질문을 좀 더 일반적인 것으로 편집 한 경우 일 수 있습니다. –
@StevenFisher, 유일한 차이점은 질문에 태그가 지정되는 방식입니다. 여기에있는 질문은 실제로 "어떻게 코어 데이터가없는 일부 데이터를 저장합니까?"라는 점입니다.이 점에서 코코아와 코코아 터치는 동일합니다. 다른 질문에 태그를 추가하여 좀 더 일반적인 것으로 만듭니다. – Caleb
이것은 파일에 대한 참조를 저장한다는 점에서 다른 게시물과 크게 다를 수 있습니다 ** (지속적으로 파일을 참조하는 가장 좋은 방법은 별칭 ("북마크") 데이터를 사용하는 것입니다 ** ** ** 일반 파일 경로). – NSGod