UIManagedDocument
コアデータ情報を保存するためにを作成する必要があります。私は通常UIManagedDocument
、クラスのプロパティとしてを作成します。UIManagedDocument
例として、私は呼ばれるものを作成しましたtheManagedDocument
:
NSURL *url = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
url = [url URLByAppendingPathComponent:@"DocumentName"];
self.theManagedDocument = [[UIManagedDocument alloc] initWithFileURL:url];
if([[NSFileManager defaultManager] fileExistsAtPath:[url path]])
{
[theManagedDocument openWithCompletionHandler:^(BOOL success){
if(success) [self documentIsReady];
if(!success) NSLog(@"Couldn't Open Document");
}];
}
else
{
[theManagedDocument saveToURL:url forSaveOperation:UIDocumentSaveForCreating completionHandler:^(BOOL success){
if(success) [self documentIsReady];
if(!success) NSLog(@"Couldn't Create Document");
}];
}
次に、ドキュメントが正常に作成または開かれたときに呼び出されるというメソッドを作成しますdocumentIsReady
(ドキュメントが既に存在する場合は開かれ、そうでない場合は作成されます)。また、コンテキストをプロパティとして保持します。ここではと呼ばれcontext
ます。私もあなたのコードに追加しました:
- (void) documentIsReady
{
if(self.theManagedDocument.documentState == UIDocumentStateNormal)
{
self.context = self.theManagedDocument.managedObjectContext;
NSError *error;
NSManagedObject *failedBankInfo = [NSEntityDescription
insertNewObjectForEntityForName:@"UserData"
inManagedObjectContext:self.context];
[failedBankInfo setValue:[NSNumber numberWithInt:1] forKey:@"userId"];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription
entityForName:@"UserData" inManagedObjectContext:self.context];
[fetchRequest setEntity:entity];
NSArray *fetchedObjects = [self.context executeFetchRequest:fetchRequest error:&error];
for (NSManagedObject *info in fetchedObjects) {
NSLog(@"Name: %@", [info valueForKey:@"userId"]);
}
}
}
次に、以下を使用し終わったら、ドキュメントを閉じます。
[self.theManagedDocument closeWithCompletionHandler:^(BOOL success){
if(success) NSLog(@"Closed Successfully");
if(!success) NSLog(@"Error Closing Document");
}];