首页 > 解决方案 > 无法将数据从 Swift 映射到 Objective-C 模型

问题描述

我正在尝试从 Swift 调用一个 api,我需要从 Objective-C 创建一个模型数据。但无法映射数据。

这是我的回应:

let  busResponses = [
    "ResponseStatus": [
        "ResponseCode": "SUCCESS",
        "ResponseMessage": "SUCCESS",
    ],
    "ResponseData": [
        "BusNo": "119",
        "bookingId": "22654"    
    ]
]

我正在调用 api 的快速课程:

当我在完成处理程序中调用我的 api 时,我这样写:

request.load(urlCache: nil) { [weak self] (apiResponse: [String:Any]?, error: Error?) ->Void in

}

apiResponse 是我从我的 api 调用中得到的响应。然后我从目标类映射到我的 BusResponse 模型。

let response: BusResponse? = BusResponse(value: piResponses)
completion(response, nil)

我的目标 c 模型类:

总线响应.h:

@interface ResponseData : BaseRealmUnique
@property NSString * BusNo;
@property NSString * bookingId;
@end

@interface ResponseStatus : BaseRealmUnique
@property NSString * ResponseCode;
@property NSString * ResponseMessage;
@end

@interface CheckInData : BaseRealmObject

@property ResponseStatus * ResponseStatus;
@property ResponseData * ResponseData;

@end

@interface CheckInResponse : BaseResponseBase

@property CheckInData  *checkInData;
+ (NSURL *)url;

@end

总线响应.m:

#import "BusResponse.h"

@implementation CheckInData

@end


@implementation ResponseData
@end


@implementation ResponseStatus
@end


@implementation CheckInResponse

+ (NSURL *)url
{
    return nil;
}

@end

我的主要疑问是,最初在调用 api 之后,我正在处理的响应为apiResponse: [String:Any]?. 但是我的响应数据不一样。

所以我尝试使用硬编码响应并传递给let response: BusResponse? = BusResponse(value: piResponses). 在这里,当我打印我的回复时,它也为零。我想要我的busNo , BookingId字符串值,带有响应代码,响应消息。

我做错了什么。任何帮助都会很棒。

标签: iosobjective-cswiftiphonexcode

解决方案


推荐阅读