2012-06-05 3 views
1

저는 사람들에 대한 간단한 기억 방법 중 하나 인 첫 번째 iPhone 앱 중 하나를 쓰고 있습니다. 나는 "Document-Based App Programming Guide for iOS"이라는 iOS 문서를 따르고 있으며 로컬 장치와 iCloud를 쿼리하여 문서를 탐지하고로드하는 지점에 도달했습니다. 이 가이드에서는 사용자 정의 클래스를 사용하며 클래스의 코드를 표시하지 않으므로 코드가 어떻게 보이는지 혼동합니다.Document Based iPhone App Guide에 혼란 스럽습니다.

예제 응용 프로그램이 이제 사용자 정의 모델 응용 프로그램의 각 문서의 이름과 파일 URL을 캡슐화 객체의 배열 (_fileList)가 있습니다 : 그들은 사용자 정의 클래스 "FileRepresentation"의 설명을 제공합니다. (FileRepresentation는 의 사용자 정의 클래스 그 객체입니다.)

사람이 무엇을 "FileRepresentation"의 클래스 구현과 같을 것이다의 예를 들어 주실 수 있습니까?

4-4

목록 4-3

-(void)viewDidLoad { 
    [super viewDidLoad]; 
    // set up Add and Edit navigation items here.... 
    if (self.documentsInCloud) { 
     _query = [[NSMetadataQuery alloc] init]; 
     [_query setSearchScopes:[NSArray arrayWithObjects:NSMetadataQueryUbiquitousDocumentsScope, nil]]; 
     [_query setPredicate:[NSPredicate predicateWithFormat:@"%K LIKE '*.txt'", NSMetadataItemFSNameKey]]; 
     NSNotificationCenter* notificationCenter = [NSNotificationCenter defaultCenter]; 
     [notificationCenter addObserver:self selector:@selector(fileListReceived) 
      name:NSMetadataQueryDidFinishGatheringNotification object:nil]; 
     [notificationCenter addObserver:self selector:@selector(fileListReceived) 
      name:NSMetadataQueryDidUpdateNotification object:nil]; 
     [_query startQuery]; 
    } else { 
     NSArray* localDocuments = [[NSFileManager defaultManager] contentsOfDirectoryAtPath: 
      [self.documentsDir path] error:nil]; 
     for (NSString* document in localDocuments) { 
      [_fileList addObject:[[[FileRepresentation alloc] initWithFileName:[document lastPathComponent] 
      url:[NSURL fileURLWithPath:[[self.documentsDir path] 
      stringByAppendingPathComponent:document]]] autorelease]]; 
     } 
    } 
} 

목록 :

부품 페이지 "Managing the Lifecycle of a Document"4-3 및 4-4 목록된다

-(void)fileListReceived { 
    NSString* selectedFileName=nil; 
    NSInteger newSelectionRow = [self.tableView indexPathForSelectedRow].row; 
    if (newSelectionRow != NSNotFound) { 
     selectedFileName = [[_fileList objectAtIndex:newSelectionRow] fileName]; 
    } 
    [_fileList removeAllObjects]; 
    NSArray* queryResults = [_query results]; 
    for (NSMetadataItem* result in queryResults) { 
     NSString* fileName = [result valueForAttribute:NSMetadataItemFSNameKey]; 
     if (selectedFileName && [selectedFileName isEqualToString:fileName]) { 
      newSelectionRow = [_fileList count]; 
     } 
     [_fileList addObject:[[[FileRepresentation alloc] initWithFileName:fileName 
      url:[result valueForAttribute:NSMetadataItemURLKey]] autorelease]]; 
    } 
    [self.tableView reloadData]; 
    if (newSelectionRow != NSNotFound) { 
     NSIndexPath* selectionPath = [NSIndexPath indexPathForRow:newSelectionRow inSection:0]; 
     [self.tableView selectRowAtIndexPath:selectionPath animated:NO scrollPosition:UITableViewScrollPositionNone]; 
    } 
} 

답변

2

향후이를 보게 될 사람들에게 이것은 w입니다. hat 다른 클래스가 어떻게 함수를 구현하는지 살펴 보았습니다.

#import "FileRepresentation.h" 

@implementation FileRepresentation 

@synthesize fileName = _fileName, fileUrl=_fileUrl; 

-(id) initWithFileName:(NSString*)fileName url:(NSURL*)url 
{ 
    self = [super init]; 
    if(self){ 
     self.fileName = fileName; 
    } 
    return self; 
} 

@end 
+1

아마도 애플의 최악의 문서 중 하나 일 것입니다. – zaph