无法保存 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
类似
块 运行 是异步的,因此它将 运行 在日志语句之后。您应该将日志(实际上您已经有一个日志,所以您应该看到它)和使用结果的代码放在块内(或从块调用的方法中)。
一个属性:
@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
类似块 运行 是异步的,因此它将 运行 在日志语句之后。您应该将日志(实际上您已经有一个日志,所以您应该看到它)和使用结果的代码放在块内(或从块调用的方法中)。