0

チェックリストのいくつかの項目を完成させています。次の方法を使用して、完了したアイテムを数えています。

- (NSUInteger)completedCount {
return [DIDTask MR_countOfEntitiesWithPredicate:[NSPredicate predicateWithFormat:@"completed == YES && list == %@", self]];
}

私が抱えている問題は、リストでメソッドを呼び出しているときです-list.completedCount-データが保存された直後に、正しいカウントではなく値-1が返されます-たとえば、アプリが画面を変更した後のみまたは(以下のように)ポップアップを表示すると、 list.completedCount が正しい値を返します。しかし、これは私には遅すぎます。

[UIAlertView showAlertViewWithTitle:@"Are you OK?" message:task.name cancelButtonTitle:@"Stop" otherButtonTitles:@[@"Yes", @"No"] handler:^(UIAlertView *alertView, NSInteger buttonIndex) {
        if (buttonIndex > 0) {
            [MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext) {
                [[task MR_inContext:localContext] setCompletedValue:buttonIndex == 1];
            } completion:^(BOOL success, NSError *error) {
            }];
            [self continueAutomaticModeWithList:list taskIndex:index + 1];
        }
    }];

私の質問は、データが保存されたときにすぐにアプリを更新または更新して、 list.completedCount で正しいカウントがすぐに得られるようにするにはどうすればよいですか?

4

1 に答える 1

2

[self continueAutomaticModeWithList:list taskIndex:index + 1];保存が完了する前に実行されるため、機能しません。それを完了ブロックに移動する必要があります。

[UIAlertView showAlertViewWithTitle:@"Are you OK?" message:task.name cancelButtonTitle:@"Stop" otherButtonTitles:@[@"Yes", @"No"] handler:^(UIAlertView *alertView, NSInteger buttonIndex) {
    if (buttonIndex > 0) {
        [MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext) {
            [[task MR_inContext:localContext] setCompletedValue:buttonIndex == 1];
        } completion:^(BOOL success, NSError *error) {
            [self continueAutomaticModeWithList:list taskIndex:index + 1];
        }];
    }
}];
于 2013-10-28T12:43:23.693 に答える