Ios RestKit-发布带有附件的对象数组
我正在创建一个具有脱机模式的任务应用程序 在脱机模式下,我将每个对象的Ios RestKit-发布带有附件的对象数组,ios,core-data,restkit-0.20,Ios,Core Data,Restkit 0.20,我正在创建一个具有脱机模式的任务应用程序 在脱机模式下,我将每个对象的isSync属性设置为false,这样当网络可用时,我可以使用谓词获取这些未同步的对象并将它们发布到服务器 问题是我无法为每个对象添加附件 在online中,我正在发送POST请求,并附上单个对象的附件,如下所示: if (attachments != nil && attachments.count > 0) { task.total_attachments = [NSNumber number
isSync
属性设置为false,这样当网络可用时,我可以使用谓词获取这些未同步的对象并将它们发布到服务器
问题是我无法为每个对象添加附件
在online中,我正在发送POST
请求,并附上单个对象的附件,如下所示:
if (attachments != nil && attachments.count > 0) {
task.total_attachments = [NSNumber numberWithInteger:attachments.count];
NSMutableURLRequest *request =[[RKObjectManager sharedManager] multipartFormRequestWithObject:task
method:RKRequestMethodPOST
path:URL_TASKS
parameters:nil
constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
int counter = 0;
for (NSDictionary *dic in attachments) {
[formData appendPartWithFileData:UIImageJPEGRepresentation([dic objectForKey:@"image"], 0.7)
name:[NSString stringWithFormat:@"attachment[%i]", counter]
fileName:[dic objectForKey:@"name"]
mimeType:@"image/jpg"];
counter++;
}
}];
RKObjectRequestOperation *operation = [[RKObjectManager sharedManager] managedObjectRequestOperationWithRequest:request
managedObjectContext:[NSManagedObjectContext MR_defaultContext]
success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
KLog(@"success");
completionHandler((DBTasks *)[mappingResult firstObject], nil);
} failure:^(RKObjectRequestOperation *operation, NSError *error) {
KLog(@"fail");
completionHandler(nil, error);
}];
[operation start];
}
if(附件!=nil&&attachments.count>0){
task.total_attachments=[NSNumber numberWithInteger:attachments.count];
NSMutableURLRequest*请求=[[RKObjectManager sharedManager]multipartFormRequestWithObject:task
方法:RKRequestMethodPOST
路径:URL\u任务
参数:零
构造体WithBlock:^(id formData){
int计数器=0;
用于(附件中的NSDictionary*dic){
[formData appendPartWithFileData:UIImageJPEGRepresentation([dic objectForKey:@“image”],0.7)
名称:[NSString stringWithFormat:@“附件[%i]”,计数器]
文件名:[dic objectForKey:@“name”]
mimeType:@“image/jpg”];
计数器++;
}
}];
RKObjectRequestOperation*操作=[[RKObjectManager sharedManager]managedObjectRequestOperationWithRequest:request
managedObjectContext:[NSManagedObjectContext先生_defaultContext]
成功:^(RKObjectRequestOperation*操作,RKMappingResult*映射结果){
KLog(“成功”);
completionHandler((DBTasks*)[mappingResult firstObject],nil);
}失败:^(RKObjectRequestOperation*操作,NSError*错误){
KLog(@“失败”);
completionHandler(无,错误);
}];
[操作启动];
}
附件似乎是按请求添加的,而不是按对象添加的。现在,当我发布一个对象数组而不是单个对象时,如何为每个对象添加附件?这样服务器就可以决定为哪个对象添加哪个附件。如果您需要帮助,请修复代码格式,以便人们可以阅读您的代码。将对象标识添加到名称中?@Wain,谢谢您的回复,但我没有得到您的提示。您能解释一下吗?您将名称设置为
附件[%i]
,但您可以向该标记添加更多信息……谢谢@Wain,我终于在formData
中添加了任务的唯一ID,现在web开发人员可以为任务获取正确的附件<代码>[formData appendPartWithFormData:[task.unique_id dataUsingEncoding:NSUTF8StringEncoding]名称:@“uniqueId”]代码>