我已经完成了斯坦福大学的课程,并按照讲座中的步骤设置了我的第一个应用程序和核心数据。大约是这样(我现在将代码转移到应用程序委托中):
- (void)setupFetchedResultsController { NSError *error = nil; NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"MainCategory"]; request.sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"position" ascending:YES]]; [self.budgetDatabase.managedObjectContext executeFetchRequest:request error:&error]; self.fetchedResultsController = [[NSFetchedResultsController alloc]initWithFetchRequest:request managedObjectContext:self.budgetDatabase.managedObjectContext sectionNameKeyPath:nil cacheName:nil]; } -(void)useDocument { if(![[NSFileManager defaultManager]fileExistsAtPath:[self.budgetDatabase.fileURL path]]){ [self.budgetDatabase saveToURL:self.budgetDatabase.fileURL forSaveOperation:UIDocumentSaveForCreating completionHandler:^(BOOL success) { [self setupFetchedResultsController]; }]; } else if (self.budgetDatabase.documentState == UIDocumentStateClosed){ [self.budgetDatabase openWithCompletionHandler:^(BOOL success){ [self setupFetchedResultsController]; }]; } else if (self.budgetDatabase.documentState == UIDocumentStateNormal){ [self setupFetchedResultsController]; } } - (void)viewWillAppear:(BOOL)animated { //Initialize database [super viewWillAppear:animated]; if(!self.budgetDatabase){ NSURL *url = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentationDirectory inDomains:NSUserDomainMask] lastObject]; [url URLByAppendingPathComponent:@"BudgetDatabase"]; self.budgetDatabase = [[UIManagedDocument alloc]initWithFileURL:url]; } }
Apple模板中的代码(如果在创建Xcode项目时选中“ CoreData”,则看起来非常不同且更加复杂)。这有什么区别UIManagedDocument
?有更好还是更坏?