iOS のスタンドフォード コース - コア データ レッスンに従ってアプリをプログラムしました。私のアプリはシミュレーターで完全に動作しますが、デバイスでは問題が発生し、[NSFileManager defaultManager] fileExistsAtPath:
常に NO が返され、アプリがSAveFORcreating
常に入り、しばらくすると遅くなり、コア データからデータが読み込まれなくなります。これはシミュレーターでは発生しません。だから助けてください!
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
if (!self.recipiesDatabase) {
NSURL *url = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
self.fileurl = [url URLByAppendingPathComponent:@"RecipiesDatabase"];
NSLog(@"URL IN FILE %@", url);
self.recipiesDatabase = [[UIManagedDocument alloc] initWithFileURL:self.fileurl]; // setter will create this for us on disk
}
}
- (void)useDocument
{
if (![[NSFileManager defaultManager] fileExistsAtPath:[self.recipiesDatabase.fileURL path] ]) {
// does not exist on disk, so create it
[self.recipiesDatabase saveToURL:self.recipiesDatabase.fileURL forSaveOperation:UIDocumentSaveForCreating completionHandler:^(BOOL success) {
NSLog(@"No existe");
[self setupFetchedResultsController];
[self fetchFlickrDataIntoDocument:self.recipiesDatabase];
}];
} else if (self.recipiesDatabase.documentState == UIDocumentStateClosed) {
// exists on disk, but we need to open it
[self.recipiesDatabase openWithCompletionHandler:^(BOOL success) {
NSLog(@"OPen");
[self setupFetchedResultsController];
//[self fetchFlickrDataIntoDocument:self.recipiesDatabase];
}];
} else if (self.recipiesDatabase.documentState == UIDocumentStateNormal) {
// already open and ready to use
NSLog(@"Normal");
[self setupFetchedResultsController];
}
}