无法保存 AFNetworking responseObject

Unable to save AFNetworking responseObject

一个属性:

@property (strong, nonatomic)NSDictionary *responseDict;

方法:

- (void)sendRequestDictionay:(NSDictionary *)dict ToServerWithMode:(NSInteger)mode {
    NSString *requestString = [self requestStringwithMode:mode];
    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

    manager.responseSerializer = [AFJSONResponseSerializer serializer];
    manager.requestSerializer = [AFJSONRequestSerializer serializer];
    [manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
    [manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Accept"];

    [manager POST:requestString parameters:dict success:^(AFHTTPRequestOperation *operation, id responseObject) {
        if ([responseObject isKindOfClass:[NSDictionary class]]) {
            self.responseDict = responseObject;
            NSLog(@"JSON: %@", self.responseDict);
        }
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        self.responseDict = nil;
        NSLog(@"%@", error);
    }];
    NSLog(@"response dictionary is nil or not: %@", self.responseDict);   
}

每次第一个 NSLog() 将记录 JSON,但第三个 NSLog 只记录:

"response dictionary is nil or not: (null)"

responseObject 似乎从未分配给 self.responseDict。与第一个NSLog矛盾

所以另一个方法 在另一个 class 中以 self.responseDict 作为参数将不起作用。

您的问题与Returning method object from inside block

类似

块 运行 是异步的,因此它将 运行 在日志语句之后。您应该将日志(实际上您已经有一个日志,所以您应该看到它)和使用结果的代码放在块内(或从块调用的方法中)。