当我正在编写库时,我需要在我自己的方法中封装来自AFNetworking调用的响应.这段代码让我很接近:
MyDevice *devices = [[MyDevice alloc] init];
[devices getDevices:@"devices.json?user_id=10" success:^(AFHTTPRequestOperation *operation, id responseObject) {
... can process json object here ...
}
- (void)getDevices:(NSString *)netPath success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success
failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error)) failure {
[[MyApiClient sharedDeviceServiceInstance] getPath:[NSString stringWithFormat:@"%@", netPath]
parameters:nil success:success failure:failure];
}
Run Code Online (Sandbox Code Playgroud)
但是,我需要在返回getDevices()之前处理从getPath返回的json对象数据.我试过这个:
- (void)getDevices:(NSString *)netPath success:(void (^)(id myResults))success
failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error)) failure {
[[MyApiClient sharedDeviceServiceInstance] getPath:[NSString stringWithFormat:@"%@", netPath]
parameters:nil
success:^(AFHTTPRequestOperation *operation, id responseObject)
{
... can process json object here ...
}
failure:^(AFHTTPRequestOperation …Run Code Online (Sandbox Code Playgroud) 需要帮助声明和实现具有块但没有参数的方法.听起来很简单,但我错过了一些因为这有效:
- (void) RetrieveDevices: (NSInteger)count
success:(void (^)(NSMutableArray *devices))success
failure:(void (^)(aylaError *err))failure;
- (void)RetrieveDevices:(NSInteger)count
success:(void (^)(NSMutableArray *devices))successBlock
failure:(void (^)(aylaError *err))failureBlock
{
}
Run Code Online (Sandbox Code Playgroud)
这将无法编译,因为它期望一个方法体:
- (void) RetrieveDevices
success:(void (^)(NSMutableArray *devices))success
failure:(void (^)(aylaError *err))failure;
- (void)RetrieveDevices
success:(void (^)(NSMutableArray *devices))successBlock
failure:(void (^)(aylaError *err))failureBlock
{
}
Run Code Online (Sandbox Code Playgroud)
感谢帮助.