2013-05-15 2 views
0

Это json, который мне нужно отправить в службы.RestKit 0.20 Post Array Json issues

{ 
"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 

Это мой код для публикации.

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); 
            }]; 

Затем я проверяю данные сообщения в службах, я нашел restkit сообщение об ошибке массив json. сигнал тревоги потерял.

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

Пожалуйста, помогите мне ~ :)

ответ

0

LOL, я исправил мои вопросы, я изменил тип поля из «NSMutableArray» до «NSSet» в DeviceAlarm объекте, а затем он работает. Я не знаю почему. Надеюсь, это может нам помочь.

+0

Причина очень проста. Читайте здесь https://github.com/RestKit/RestKit/wiki/Object-mapping – giuseppe

+0

именно в какой части? – jAckOdE

Смежные вопросы