我正在尝试从我调用的包含块的类方法中返回布尔值。我收到错误消息,不兼容的块指针类型正在发送。我只想知道我调用的类方法是否有错误完成...

+ (BOOL)saveSelectedDepartmentsToParse:(NSMutableDictionary *)dictionary {

    NSArray *array = [dictionary allKeysForObject:@"YES"];
    NSMutableArray *trimmedArray = [[NSMutableArray alloc] init];

    for (NSString *string in array) {

        NSString *final = [string removeAllInvalidCharacters];
        [trimmedArray addObject:final];
    }

    NSLog(@"Array = %@", trimmedArray);

    PFInstallation *currentInstallation = [PFInstallation currentInstallation];

    [currentInstallation removeObjectForKey:@"channels"];
    [currentInstallation addObjectsFromArray:trimmedArray forKey:@"channels"];
    [currentInstallation saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {

        if (error == nil) {

            NSLog(@"Parse Save Succeeded");

            [self saveDepartmentsDictionary:dictionary];
        }
        else {

            NSLog(@"Parse Save Failed, %@", error.localizedDescription);
        }
    }];
}

最佳答案

我只想知道我调用的类方法


这是对异步代码如何工作的误解。当您向saveInBackgroundWithBlock:提供块时,不会立即执行该代码。它由Parse框架在稍后的某个时间执行,如果将块定义为包含一个,则Parse的任何执行此操作的部分都将获得返回值。您的块在编写时并未执行,因此您无法在编写时返回任何内容。

您的代码没有调用该块,也无法从中将值返回给您的代码。这样做是没有意义的。如果代码的另一部分想知道保存何时完成,则除了返回值外,还需要使用其他机制,例如从块中调用方法,发布通知或键值观察。

关于ios - iOS在块中返回 boolean 值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15375627/

10-14 21:48
查看更多