我已经经历了一些Stack Overflow问题,但似乎无法弄清楚如何修改我的代码以包含失败块。如何在此代码中添加故障块?
+ (void)loginUser:(NSString *)username withPassword:(NSString *)password :(void (^)(BOOL finished))completionBlock {
NSString *endpoint = @"Users/Login";
[self postEndpoint:endpoint params:[NSMutableDictionary dictionaryWithObjectsAndKeys:username, @"Username", password, @"Password", nil] completionBlock:^(DollarResponse *response) {
NSLog(@"%@",response);
if ([response.result isEqual:[NSNull null]]) {
[self displayError:response.message];
} else {
Login *login = [[Login alloc] initWithDictionary:response.result];
[self saveLogin:login];
completionBlock(YES);
}
}];
/* loginUser:withPassword:: */
最佳答案
首先,您需要通过障碍。为此定义一个类型是有用的:
typedef void (^MyErrorBlock)(NSString* error);
请注意,您将在该块中将错误作为
NSString
传递,因为您的response.message
看起来像一个字符串。尽管通常错误块会传递NSError
。要将其作为参数传递,您可以执行以下操作:
-(void)loginUser:(NSString *)username
withPassword:(NSString *)password
(void (^)(BOOL finished)): completionBlock
(MyErrorBlock): errorBlock
然后,您可以在调用completionBlock时调用它,但是您可以这样传递
response.message
: errorBlock(response.message)
您还可以保存一个指向errorBlock的指针,然后在需要时调用它。
关于ios - 我如何添加故障 block Objective-C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19774218/