2017.3.8
3291 ワード
昨日のピットに続いて小さなピットが現れ、パッケージの方法は回復しなかった.
昨日のピットが認証後のユーザがログインインタフェースを呼び出すとtokenは戻らず、objectIDが返され、このobjectIDで削除認証のインタフェースを呼び出し、先に削除してからログインします.
しかし、削除に成功した後、コールバックがなかったことに気づき、気まずい思いをしました.公式ドキュメントから見ると、インタフェースを削除するインタフェースの戻り値は空です.
したがって、AFNetworkingがインタフェースを呼び出すと、返されるresponseObjectはnilになります.それから1級1級はOctoKitソースコードを開けて見て、もとはresponseObjectがnilの時、OctoKitはいかなる処理をしていないで、コールバックがありません.だからソースコードを変更しました(もともと私の原則は遠くないべきで、先に拡張の方式を通じて効果を実現することができることを見て、しかし速度のために、先にソースコードを変更しましょう).
これでやっと下に進むことができた.
昨日のピットが認証後のユーザがログインインタフェースを呼び出すとtokenは戻らず、objectIDが返され、このobjectIDで削除認証のインタフェースを呼び出し、先に削除してからログインします.
しかし、削除に成功した後、コールバックがなかったことに気づき、気まずい思いをしました.公式ドキュメントから見ると、インタフェースを削除するインタフェースの戻り値は空です.
DELETE /authorizations/:id
Status: 204 No Content
したがって、AFNetworkingがインタフェースを呼び出すと、返されるresponseObjectはnilになります.それから1級1級はOctoKitソースコードを開けて見て、もとはresponseObjectがnilの時、OctoKitはいかなる処理をしていないで、コールバックがありません.だからソースコードを変更しました(もともと私の原則は遠くないべきで、先に拡張の方式を通じて効果を実現することができることを見て、しかし速度のために、先にソースコードを変更しましょう).
これでやっと下に進むことができた.
- (RACSignal *)parsedResponseOfClass:(Class)resultClass fromJSON:(id)responseObject {
NSParameterAssert(resultClass == nil || [resultClass isSubclassOfClass:MTLModel.class]);
return [RACSignal createSignal:^ id (id subscriber) {
void (^parseJSONDictionary)(NSDictionary *) = ^(NSDictionary *JSONDictionary) {
if (resultClass == nil) {
[subscriber sendNext:JSONDictionary];
return;
}
NSError *error = nil;
OCTObject *parsedObject = [MTLJSONAdapter modelOfClass:resultClass fromJSONDictionary:JSONDictionary error:&error];
if (parsedObject == nil) {
// Don't treat "no class found" errors as real parsing failures.
// In theory, this makes parsing code forward-compatible with
// API additions.
if (![error.domain isEqual:MTLJSONAdapterErrorDomain] || error.code != MTLJSONAdapterErrorNoClassFound) {
[subscriber sendError:error];
}
return;
}
NSAssert([parsedObject isKindOfClass:OCTObject.class], @"Parsed model object is not an OCTObject: %@", parsedObject);
// Record the server that this object has come from.
parsedObject.baseURL = self.baseURL;
[subscriber sendNext:parsedObject];
};
if ([responseObject isKindOfClass:NSArray.class]) {
for (NSDictionary *JSONDictionary in responseObject) {
if (![JSONDictionary isKindOfClass:NSDictionary.class]) {
NSString *failureReason = [NSString stringWithFormat:NSLocalizedString(@"Invalid JSON array element: %@", @""), JSONDictionary];
[subscriber sendError:[self parsingErrorWithFailureReason:failureReason]];
return nil;
}
parseJSONDictionary(JSONDictionary);
}
[subscriber sendCompleted];
} else if ([responseObject isKindOfClass:NSDictionary.class]) {
parseJSONDictionary(responseObject);
[subscriber sendCompleted];
} else if (responseObject != nil) {
NSString *failureReason = [NSString stringWithFormat:NSLocalizedString(@"Response wasn't an array or dictionary (%@): %@", @""), [responseObject class], responseObject];
[subscriber sendError:[self parsingErrorWithFailureReason:failureReason]];
} else {
parseJSONDictionary(nil);
[subscriber sendCompleted];
}
return nil;
}];
}