在RestKit中序列化嵌套图像(Rails后端)
这是我得到的:
food_name_token Pizza id 1 category_id 1 review {"note"=>"tasty!", "image"=>"<RKParamsAttachment: 0x7834500>"}
这就是我所期望的:
food_name_token Pizza id 1 category_id 1 review {"note"=>"tasty!", "image"=>{"filename"=>"image", "type"=>"image/png", "name"=>"image", "tempfile"=>"#", "head"=>"Content-Disposition: form-data; name=\"image\"; filename=\"image\"\r\nContent-Type: image/png\r\n"}}
我正在使用Restkit,我试图序列化Iphone上的数据,并将其发送到我的Rails后端。 大多数情况下,它的工作,但我似乎无法让我的多部分图像序列化。
该图片属于“评论”类,而该类又被嵌套在“Dish”类中。 这是我到目前为止:
// Set up routes RKObjectManager* manager = [RKObjectManager objectManagerWithBaseURL:@"http://postbin.org"]; [manager.router routeClass:[Dish class] toResourcePath:@"/5a850fe1" forMethod:RKRequestMethodPOST]; [manager.router routeClass:[Review class] toResourcePath:@"/5a850fe1" forMethod:RKRequestMethodPOST]; // Map Dish Object RKObjectMapping *dishMapping = [RKObjectMapping mappingForClass:[NSMutableDictionary class]]; [dishMapping mapKeyPath:@"id" toAttribute:@"identifier"]; [dishMapping mapKeyPath:@"category_id" toAttribute:@"categoryID"]; [dishMapping mapKeyPath:@"food_name_token" toAttribute:@"name"]; // Map Review Object RKObjectMapping *reviewMapping = [RKObjectMapping mappingForClass:[Review class]]; [reviewMapping mapKeyPath:@"note" toAttribute:@"note"]; [reviewMapping mapKeyPath:@"image" toAttribute:@"image"]; // Define the relationship mapping [dishMapping mapKeyPath:@"review" toRelationship:@"review" withMapping:reviewMapping]; // Set serialization for Dish Class RKObjectMapping* dishSerializationMapping = [dishMapping inverseMapping]; [[RKObjectManager sharedManager].mappingProvider setSerializationMapping:dishSerializationMapping forClass:[Dish class] ]; // Set serialization for Review Class RKObjectMapping* reviewSerializationMapping = [reviewMapping inverseMapping]; [[RKObjectManager sharedManager].mappingProvider setSerializationMapping:reviewSerializationMapping forClass:[Review class] ];
然后我分配的值:
[Dish sharedDish].name = @"Pizza"; [Dish sharedDish].identifier = [NSNumber numberWithInt:1]; [Dish sharedDish].categoryID = [NSNumber numberWithInt:1]; [Review sharedReview].note = @"tasty!"; // Turn an image into an RKParamsAttachment object and assign it to the image attribute of the Review class RKParams* params = [RKParams params]; UIImage* imageOrig = [UIImage imageNamed:@"pizza.jpg"]; NSData* imageData = UIImagePNGRepresentation(imageOrig); RKParamsAttachment* image = [params setData:imageData MIMEType:@"image/png" forParam:@"image"]; [params release]; [Review sharedReview].image = image;
然后,将我的Review对象分配给我的Dish对象的review属性,并将其发送出去:
[Dish sharedDish].review = [Review sharedReview]; [[RKObjectManager sharedManager] postObject:[Dish sharedDish] delegate:self];
好像我以错误的方式将图像附加到对象上。
什么是正确的方法来做到这一点?
你尝试手动添加到param名称的嵌套:
RKParamsAttachment* image = [params setData:imageData MIMEType:@"image/png" forParam:@"review[image]"];
- iOS / Swift – 向下/向上滚动时隐藏/显示UITabBarController
- SKAction scaleXTo:-1
- 在Swift中将Int更改为CGFloat以返回heightForRowAtIndexPath tableview函数
- UIWebView能与应用程序交互(沟通)吗?
- iPhone尺寸等级
- 如何asynchronous加载dynamicUITableView图像?
- iOS 4.3模拟器Localization.strings使用法语,但不是英语
- 在设备上testingiphone应用的步骤(已创buildconfiguration文件/证书)
- iOS:滑动UIView开/关屏幕