首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对象映射不适用于RESTKit对象映射

对象映射不适用于RESTKit对象映射
EN

Stack Overflow用户
提问于 2013-10-05 13:11:27
回答 1查看 182关注 0票数 0

但是,它总是说它映射了映射结果中的一个对象,但我不知道这是什么,也不知道如何让它映射其余的对象。我到底做错了什么,导致映射结果显示为一个映射的对象,我如何让它映射所有合适的对象?

以下是映射结果:

代码语言:javascript
复制
Mapping Result: (
    "<Info: 0x9c91130>"
)

代码语言:javascript
复制
NSIndexSet *statusCodeSet = RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful);
NSString *urlString = [NSString stringWithFormat:@"https://beta.stuff.com/"];
NSURL *url = [NSURL URLWithString:urlString];

//Object Mapping
RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[Info class]];
[mapping addAttributeMappingsFromDictionary:@{@"name": @"name", @"id": @"strenuusID", @"location_specialties.address": @"address", @"location_specialties.state": @"state", @"location_specialties.zip": @"zipcode", @"location_specialties.address_lines": @"address_lines"}];

NSString *pathPatternString = [NSString stringWithFormat:@"stuff/%@/stuff2/%@/", moreresultsVCSobj.projectNumber, moreresultsVCSobj.doctorStuff];

//Response Descriptor
RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:mapping
                                                                                                method:RKRequestMethodGET
                                                                                           pathPattern:pathPatternString
                                                                                               keyPath:@""
                                                                                           statusCodes:statusCodeSet];

RKObjectManager *manager = [RKObjectManager managerWithBaseURL:url];
[manager addResponseDescriptor:responseDescriptor];
[manager.HTTPClient setDefaultHeader:@"Auth-Token" value:moreresultsVCSobj.userAuthToken];

Info *info = [Info new];
[manager getObject:info path:pathPatternString parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult)
{
    NSLog(@"Mapping Result: %@", mappingResult.array);
} failure:^(RKObjectRequestOperation *operation, NSError *error)
{
    NSLog(@"Error: %@", error);
}];

下面是我正在解析的JSON:

代码语言:javascript
复制
response.body=
{
"name": "Name, Generic N,   DDS",
"id": 123456,
"npi": "1234567890",
"hospitality": false,
"groupiness": [
    "Other"
],
"client_ids": null,
"has_comments": false,
"comment_count": 0,
"is_facility": false,
"location_specialties": [
    {
        "id": 123456,
        "address_id": 454345,
        "address": "1234 Rifle    Rd",
        "state": "Al",
        "zip": "43543",
        "address_lines": [
            "1234 Rifle Rd",
            "Generic Town, Al    43543",
            "111-222-    3344"
        ],
        "latitude": 21432234,
        "longitude": 432432,
        "is_validated": true,
        "providers_at_address_count": 2,
        "specialties": [
            {
                "name": "Dentists",
                "plans": [
                    {
                        "name": "Plan name",
                        "lists_specialty": true
                    },
                    {
                        "name": "Plane name 2",
                        "lists_specialty": true
                    },
                    {
                        "name": "Plan name 3",
                        "lists_specialty": true
                    }
                ]
            }
        ]
    },
    [
        {
            "id": 123456,
            "address_id": 454345,
            "address": "1234 Rifle      Rd",
            "state": "Al",
            "zip": "43543",
            "address_lines": [
                "1234 Rifle Rd",
                "Generic Town, Al    43543",
                "111-222-        3344"
            ],
            "latitude": 21432234,
            "longitude": 432432,
            "is_validated": true,
            "providers_at_address_count": 2,
            "specialties": [
                {
                    "name": "Dentists",
                    "plans": [
                        {
                            "name": "Plan name",
                            "lists_specialty": true
                        },
                        {
                            "name": "Plane name 2",
                            "lists_specialty": true
                        },
                        {
                            "name": "Plan name 3",
                            "lists_specialty": true
                        }
                    ]
                }
            ]
        },
        "hospital_detail": null,
        "tags": [

        ]
    }

编辑:这是我的Info.h文件。我试着检查映射和其他东西,比如name,但它们仍然不起作用。

代码语言:javascript
复制
#import <Foundation/Foundation.h>

@interface Info : NSObject

@property (nonatomic, copy) NSString *name;
@property (nonatomic, copy) NSString *strenuusID;
@property (nonatomic, copy) NSString *npi;
@property (nonatomic, copy) NSArray *specialty_search_groups;
@property (nonatomic, copy) NSArray *address_lines;
@property (nonatomic, copy) NSArray *address;
@property (nonatomic, copy) NSString *state;
@property (nonatomic, copy) NSString *zipcode;
@property (nonatomic, copy) NSString *planName;

@end
EN

回答 1

Stack Overflow用户

发布于 2013-10-06 02:23:33

您将获得一个result对象,因为您的JSON是一个字典。您的映射和响应描述符是按照单个对象编写的。

此映射:

代码语言:javascript
复制
@"location_specialties.address": @"address"

不起作用,因为location_specialties是一个数组,所以没有办法访问地址。除非你的目标是一个数组变量,否则它是可以工作的。

您需要详细检查Info对象的内容,并在跟踪日志中查找问题。如果您仍然有问题,您需要提供有关Info对象本身的详细信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19194244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档