2012-06-05 1 views
1

Я пишу одно из моих первых приложений для iPhone - простой способ запомнить вещи о людях. Я следую документу iOS под названием «Document-Based App Programming Guide for iOS», и я дошел до того, что мы запрашиваем локальное устройство и iCloud для обнаружения и загрузки документов. В руководстве они используют пользовательский класс, и поскольку они не показывают код для класса, я смущен тем, как он должен выглядеть. Они дают это описание пользовательского класса «FileRepresentation»:Confused on Document Based iPhone App Guide

Пример приложения теперь имеет массив (_fileList) из пользовательской модели объектов, которые инкапсулируют имя и файл URL каждого из документов приложения. (FileRepresentation обычай класс эти объекты.)

Может кто-нибудь дать пример того, что «FileRepresentation» 's реализация класса будет выглядеть?

Части Листинг 4-3 и 4-4 на странице "Managing the Lifecycle of a Document":

Листинг 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]]; 
     } 
    } 
} 

Листинг 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 Я разработал, видя, как другие классы реализуют свои функции init:

#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

Возможно, это один из худших документов Apple. – zaph