コアデータオブジェクトを保存するために子コンテキストを使用していますが、保存しません。コードの問題は何ですか? 私はperformブロックを削除し、performblockAndwaitも使用しましたが、動作しませんでした。 prepareDataForCustomYearlyOptionメソッドと同様に、私は他のメソッドを毎日、毎週、毎月、以下のコードと同じコードで3つ持っています。子コンテキストがコアデータに保存されない
別の場所でも同じコードが動作しています。
- (NSManagedObjectContext *)backgroundManagedObjectContext
{
if (_managedObjectContext == nil) {
[[OUCSCoreDataManager privateInstance]managedObjectContext];
}
NSManagedObjectContext *temporaryContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
temporaryContext.parentContext = _managedObjectContext;
return temporaryContext;
}
- (void)prepareDataForCustomYearlyOption {
if ([CoreDataManager countForEntity:kCALENDAR_CUSTOM_YEARLY_REPEAT_OPTIONS] != 0) {
return;
}
NSManagedObjectContext *temporaryContext = [[CoreDataManager privateInstance]backgroundManagedObjectContext];
[temporaryContext performBlock:^{
@try {
RepeatOptionsCustomYearly *yearlyOption = [RepeatOptionsCustomYearly insertInManagedObjectContext:temporaryContext];
yearlyOption.title = NSLocalizedString(k_Yearly, @"REPEAT_OPTIONS_TITILE3");
yearlyOption.isSelected = [NSNumber numberWithBool:NO];
yearlyOption.every = [NSNumber numberWithInt:1];
yearlyOption.startOn = [NSDate date];
yearlyOption.endsOn = [NSDate date];
yearlyOption.neverEnds = [NSNumber numberWithBool:NO];
yearlyOption.summary = @"";
yearlyOption.everyRange = [NSKeyedArchiver archivedDataWithRootObject:[self getYearRange]];
} @catch (NSException *exception) {
NSLog(@"Calendar Manager Exception: --> %@ %@",exception.name, exception.reason);
}
// push to parent
[temporaryContext performBlock:^{
// push to parent
NSError *errorTemp;
if (![temporaryContext save:&errorTemp])
{
// handle error
NSLog(@"Temp MOC Save Error: %@",errorTemp.description);
}
}];
}];
}
_managedObjectContextがあるプライベートキューを使用する正しい方法をメインコンテキストを更新することを確認します、それはです初期化中。私は実行ブロックを削除しようとしましたが、動作していません。 – Sandy
保存操作中にエラーはありますか? – yageek