Search code examples
iosobjective-cnsdictionaryrestkit

Restkit. How to post NSDictionary inside NSObject


I want to reach the following result in request.body CarwashForm[workmode][1][status]=1

where [1] is id of object

@interface  WorktimeForm : NSObject
@property(nonatomic,copy) NSNumber *isset;
@property(nonatomic,copy) NSNumber *weekday;
@property(nonatomic,copy) NSNumber *status;
@property(nonatomic,copy) NSString *work_from;
@property(nonatomic,copy) NSString *work_to;
@end;

@interface CarwashForm : NSObject
@property(nonatomic,copy) NSString *name;
@property(nonatomic,copy) NSString *address;
@property(nonatomic,copy) NSNumber *latitude;
@property(nonatomic,copy) NSNumber *longitude;
@property(nonatomic,copy) NSArray<NSString*> *files;
@property NSDictionary *workmode;
@end

The mapping code in screenshot http://joxi.ru/4AkOO4kiMvQ4aA . I use the different cases (for array, dictionary, nsset ) but cannot the get suitable result

NSDictionary *workmode is list of object with key ID.

Thank you for any assistance.


Solution

  • Help this:

      [delegate startProgress];
        self.manager.requestSerializationMIMEType = @"application/x-www-form-urlencoded";
    
        NSMutableDictionary *dtPost = [NSMutableDictionary new];
    
        [dtPost setObject:carwash.name forKey:@"CarwashForm[name]"];
        [dtPost setObject:carwash.address forKey:@"CarwashForm[address]"];
        [dtPost setObject:carwash.latitude forKey:@"CarwashForm[latitude]"];
        [dtPost setObject:carwash.longitude forKey:@"CarwashForm[longitude]"];
    
        for (WorktimeForm* wt in carwash.workmode){
            [dtPost setObject:wt.status forKey:[NSString stringWithFormat:@"CarwashForm[workmode][%@][isset]",wt.weekday]];
            [dtPost setObject:wt.status forKey:[NSString stringWithFormat:@"CarwashForm[workmode][%@][status]",wt.weekday]];
            [dtPost setObject:wt.work_from forKey:[NSString stringWithFormat:@"CarwashForm[workmode][%@][work_from]",wt.weekday]];
            [dtPost setObject:wt.work_to forKey:[NSString stringWithFormat:@"CarwashForm[workmode][%@][work_to]",wt.weekday]];
        }
    
        [self.manager postObject:dtPost path:[NSString stringWithFormat: @"carwash/%d",[id_wash intValue]] parameters:dtPost success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult){
            NSLog(@"%@",@"OK saveCarwash");
            [delegate success:200 toPack:mappingResult toMsg:@"success"];
            [delegate stopProgress];
        } failure:^(RKObjectRequestOperation *operation, NSError *error) {
            NSLog(@"%@",@"ERROR saveCarwash");
            [delegate stopProgress];
            [delegate fail:500 toMsg:[error localizedFailureReason]];
        }];