여기 백엔드로 푸시하려는 일부 템플릿 (개체)이있는 상황이 있습니다. 이제 사용자가 동기화 버튼을 누르면 모든 템플릿을 얻는 백엔드 양식에 대한 연결이 있습니다. IPAD 앱의 템플릿은 백엔드에서 전송 된 템플릿과 비교됩니다. IPAD 앱의 템플릿에 ID (0)가있는 경우 백엔드에 대한 게시물이 있습니다. 그런 다음 백엔드는 ID가있는 저장된 템플리트를 리턴합니다 (로컬 저장된 템플리트에 추가).API에 대한 여러 게시물에 대해 NSURLconnection을 사용하십시오.
이제 내 문제는 내가 동일한 연결 (templateupdateconnection => 나쁜 이름 ...)을 사용하고 있다는 것입니다. 백엔드에 대한 모든 게시물에 대해. 실제 문제는 connectiondidfinishloading connection 메서드에서 백엔드에 게시 된 마지막 템플릿에서만 응답을 얻는다는 것입니다.
어떻게 해결할 수 있는지 아는 사람은 누구입니까?
미리 감사드립니다.
하는 코드
-(void)syncRegistrations:(NSArray *)arrayOfRegistrations{
NSFetchRequest *request = [[NSFetchRequest alloc]init];
[request setEntity:[NSEntityDescription entityForName:@"Registration" inManagedObjectContext:self.managedObjectContext]];
NSError *error;
NSArray *Data = [self.managedObjectContext executeFetchRequest:request error:&error];
BOOL old=FALSE;
for(int registrationCounter = 0; registrationCounter < arrayOfRegistrations.count; registrationCounter ++){
NSDictionary *dictRegistration = [arrayOfRegistrations objectAtIndex:registrationCounter];
for(Registration *registration in Data){
if([dictRegistration objectForKey:@"id"] == registration.id){
old = TRUE;
}
else if ([registration.id intValue]==0){
NSString *jsonRequest = [NSString stringWithFormat:@"{\"form\":%@}",registration.form.id];
NSLog(@" de jsonrequest: %@",jsonRequest);
NSURL *url = [NSURL URLWithString:@"http://mybackend/registrations"];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];
NSData *requestData = [NSData dataWithBytes:[jsonRequest UTF8String] length:[jsonRequest length]];
[request setHTTPMethod:@"POST"];
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setValue:[NSString stringWithFormat:@"%d", [requestData length]] forHTTPHeaderField:@"Content-Length"];
[request setHTTPBody: requestData];
self.registrationtoupdate = registration;
self.registrationUpdateConnection = NULL;
self.registrationUpdateConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
[self.registrationUpdateConnection start];
registration.id=[NSNumber numberWithInteger:-1];
[self.managedObjectContext save:&error];
old=TRUE;
}
}
if(old==FALSE){
//nieuwe template toevoegen
Registration *registration = [NSEntityDescription insertNewObjectForEntityForName:@"Registration" inManagedObjectContext:self.managedObjectContext];
registration.id = [dictRegistration objectForKey:@"id"];
registration.form = [self getFormByID:[dictRegistration objectForKey:@"form"]];
[self.managedObjectContext save:&error];
}
old=FALSE;
}
//[self getRC];
[self performSelector:@selector(getRC) withObject:nil afterDelay:3];
}
CONNECTIONDIDFINISHLOADING 방법
else if([connection isEqual:self.registrationUpdateConnection]){
NSDictionary *dictRegistration = [NSJSONSerialization JSONObjectWithData:self.registrationdata options:kNilOptions error:&error];
NSLog(@"de data van de registratie is: %@",dictRegistration);
NSLog(@"de registration to update is: %@",self.registrationtoupdate);
self.registrationtoupdate.id = [dictRegistration objectForKey:@"id"];
[self.managedObjectContext save:&error];
}
답변 해 주셔서 감사합니다! 어디로 가고 싶은지보고 있지만 새 연결 클래스에 대한 전체 예제를 제공 할 수는 있습니다. 원인을 파악할 수 없기 때문입니다. – leke