Ios RestKit 0.20后数组Json问题

Ios RestKit 0.20后数组Json问题,ios,xcode,restkit,restkit-0.20,Ios,Xcode,Restkit,Restkit 0.20,这是我需要发布到服务的json { "deviceToken":"asdfasdfasdf", "alarm": [ { "start" "8:30", "end": "9:30", "line": "156", "code": "xxxafsdfasdf", "station": "asdfa", "stationLeft": 5, "available": true, "times": 2 }] } 响应数据仅在报警中有一个

这是我需要发布到服务的json

{
"deviceToken":"asdfasdfasdf",
"alarm": [
{
    "start" "8:30",
    "end": "9:30",
    "line": "156",
    "code": "xxxafsdfasdf", 
    "station": "asdfa",
    "stationLeft": 5,
    "available": true,
    "times": 2
}]
}
响应数据仅在报警中有一个字段“id”:

    {
        "deviceToken":"asdfasdfasdf",
        "alarm": [
        {
           "id":1,
           "start" "8:30",
           "end": "9:30",
           "line": "156",
           "code": "xxxafsdfasdf", 
           "station": "asdfa",
           "stationLeft": 5,
           "available": true,
           "times": 2
        }]
     }
然后我定义了两个对象: DeviceAlarm对象:

@interface DeviceAlarm : NSObject

@property(nonatomic, strong) NSMutableArray *alarm;

@property(nonatomic, copy) NSString *deviceToken;

@end
@interface Alarm : NSObject

@property(nonatomic, copy) NSNumber *id;

@property(nonatomic, copy) NSString *start;

@property(nonatomic, copy) NSString *end;

@property(nonatomic, copy) NSString *code;

@property(nonatomic, copy) NSString *line;

@property(nonatomic, copy) NSString *station;

@property(nonatomic, copy) NSNumber *stationLeft;

@property(nonatomic) BOOL available;

@property(nonatomic, copy) NSNumber *times;

@end
报警对象:

@interface DeviceAlarm : NSObject

@property(nonatomic, strong) NSMutableArray *alarm;

@property(nonatomic, copy) NSString *deviceToken;

@end
@interface Alarm : NSObject

@property(nonatomic, copy) NSNumber *id;

@property(nonatomic, copy) NSString *start;

@property(nonatomic, copy) NSString *end;

@property(nonatomic, copy) NSString *code;

@property(nonatomic, copy) NSString *line;

@property(nonatomic, copy) NSString *station;

@property(nonatomic, copy) NSNumber *stationLeft;

@property(nonatomic) BOOL available;

@property(nonatomic, copy) NSNumber *times;

@end
这是我要发布的代码

DeviceAlarm* devicealarm = [[DeviceAlarm alloc] init];

Alarm* alarm = [[Alarm alloc] init];
alarm.start = @"8:00";
alarm.end = @"9:30";
alarm.line = @"156";
alarm.code = @"fasdfasdf";
alarm.station = @"asdfas";
alarm.stationLeft = @1000;
alarm.available = true;
alarm.times = @1;

devicealarm.alarm = [NSArray arrayWithObjects:alarm , nil];
devicealarm.deviceToken = @"adsfasdfasdf";

RKObjectMapping *alarmMapping = [RKObjectMapping requestMapping];

[alarmMapping addAttributeMappingsFromArray:@[@"start",@"end",@"code",@"station", @"stationLeft",@"available",@"times",@"line"]];

RKObjectMapping *deviceMapping = [RKObjectMapping requestMapping];

RKRelationshipMapping *alarmRelationship = [RKRelationshipMapping
                                           relationshipMappingFromKeyPath:@"alarm"
                                           toKeyPath:@"alarm"
                                           withMapping:alarmMapping];


[deviceMapping addAttributeMappingsFromArray:@[@"deviceToken"]];

[deviceMapping addPropertyMapping:alarmRelationship];

NSString* path = @"/api/alarm/asdfasdf";
RKRequestDescriptor *requestDescriptor = [RKRequestDescriptor requestDescriptorWithMapping:deviceMapping
                                                                               objectClass:[DeviceAlarm class]
                                                                               rootKeyPath:nil];

RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:[DeviceAlarm DeviceAlarmResponseMapping]
                                                                                   pathPattern:nil
                                                                                       keyPath: nil
                                                                                   statusCodes:[NSIndexSet indexSetWithIndex:200]];


RKObjectManager *manager = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:@"http://127.0.0.1:5000/"]];
[manager addRequestDescriptor:requestDescriptor];
[manager addResponseDescriptor:responseDescriptor];

[manager postObject:devicealarm path:path parameters:nil
                                    success:^(RKObjectRequestOperation *operation, RKMappingResult *result) {
                                        NSLog(@"Loading mapping result: %@", result);

                                    } failure:^(RKObjectRequestOperation *operation, NSError *error) {
                                        RKLogError(@"Operation failed with error: %@", error);
                                    }];
然后我检查服务中的post数据,发现restkit post有一个错误数组json。 报警记录丢失

    {
        "deviceToken":"asdfasdfasdf",
        "alarm": [
                  "8:30",
                  "9:30",
                  "156",
                  "xxxafsdfasdf", 
                  "asdfa",
                  5,
                  true,
                  2
         ]
     }

请帮帮我~:)

哈哈,我已经解决了我的问题,我在DeviceAlarm对象中将字段类型从“NSMutableArray”更改为“NSSet”,然后它就可以工作了。我不知道为什么。希望它能帮助我们。

原因很简单。读这里