Я пишу одно из моих первых приложений для 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];
}
}
Возможно, это один из худших документов Apple. – zaph