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