サーバーへの POST 要求を実行した後、返されたオブジェクトはマッピングできませんが、必要なインフラストラクチャはすべて作成しました。
問題を単純化するために、「POST オブジェクト」クラスを作成し、応答オブジェクト用に別のクラスを作成しました。(以下は私のコードの重要な部分です)
JSON
リクエスト
{
"USERNAME" : 280S808D08s,
"PASSWORD" : "lkjl123kjl",
"DEVICE" : 12345
}
応答
{
"firstname": "first name here",
"lastname": "last name here",
"mobile": "012938012839",
"email": "john@smith.com",
"expiry": "2016-05",
"authorized": true
}
これは私の「POST オブジェクト」クラスの実装です
@interface Login : NSObject
@property NSString *USERNAME;
@property NSString *PASSWORD;
@property NSString *DEVICE;
@end
これらは API メソッドです。
RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[Login class]];
[mapping addAttributeMappingsFromArray:@[@"USERNAME", @"PASSWORD",@"DEVICE"]];
RKRequestDescriptor *loginRequest = [RKRequestDescriptor
requestDescriptorWithMapping:[mapping inverseMapping]
objectClass:[Login class]
rootKeyPath:nil
method:RKRequestMethodPOST];
実際の依頼
[objectManager addRequestDescriptor:loginRequest];
// POST
Login* loginUser = [Login new];
loginUser.USERNAME = @"96150001505233";
loginUser.PASSWORD = @"gb168362";
loginUser.DEVICE = @"12345";
[[RKObjectManager sharedManager] postObject:loginUser
path:@"/app_dev.php/api/v2/user/login"
parameters:nil
success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
} failure:^(RKObjectRequestOperation *operation, NSError *error) {
}];
そして今、「RECEIVEDオブジェクト」のクラス
@interface User : NSObject
@property NSString *firstname;
@property NSString *lastname;
@property NSString *email;
@property NSString *mobile;
@end
API メソッド:
RKObjectMapping *userMap = [RKObjectMapping mappingForClass:[User class]];
[userMap addAttributeMappingsFromArray:@[ @"firstname", @"lastname", @"email", @"mobile"]];
RKResponseDescriptor *userResponse = [RKResponseDescriptor
responseDescriptorWithMapping:userMap
method:RKRequestMethodPOST
pathPattern:@"user/login"
keyPath:nil
statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
[objectManager addResponseDescriptor: userResponse];
エラー
読みやすいようにきれいに間隔をあけました。
エラー Domain=org.restkit.RestKit.ErrorDomain Code=1001 「読み込まれた応答と一致する応答記述子がありません。」
UserInfo={NSLocalizedFailureReason=200 応答が URL ' http://mywebsite.com/app_dev.php/api/v2/user/login ' から読み込まれましたが、すべて (0) の応答記述子に一致しませんでした:,
NSErrorFailingURLStringKey= http://mywebsite.com/app_dev.php/api/v2/user/login、
NSErrorFailingURLKey= http://mywebsite.com/app_dev.php/api/v2/user/login、
NSUnderlyingError=0x7fee81d59440 {エラー ドメイン=org.restkit.RestKit.ErrorDomain コード=1001 「検索されたキー パスでマッピング可能なオブジェクト表現が見つかりませんでした。」
UserInfo={NSLocalizedDescription=検索されたキー パスでマッピング可能なオブジェクト表現が見つかりませんでした。
NSLocalizedFailureReason = マッピング操作は、検索されたキー パスでネストされたオブジェクト表現を見つけることができませんでした: マッパーに入力された表現には、次のキー パスでネストされたオブジェクト表現が含まれていることがわかりました: 承認済み、電子メール、有効期限、ファーストネーム、ラストネーム、モバイル
これは、マッピングのキー パスが誤って構成されていることを示している可能性があります。
助けてください :(