コードサンプルと投稿を何日も読んでいますが、CoreDataオブジェクトからRESTfulWebサービスにJSONデータを投稿するための決定的な方法が見つかりませんでした。WebサービスからJSONをプルすることについてはたくさんのドキュメントがありますが、返送することについてはそれほど多くありません。誰かが私に良い例を示したり、それを行う方法についていくつかのコードを投稿したりできますか?Core Dataを使用していて、返送したいオブジェクトをディクショナリにマップしていますが、サービスに送信するためのコードがありません。
編集:
以下のコードは正しく表示され、エラーなしで実行されますが、0バイトのデータが返され、Webサービスがリクエストを受信していないようです。JSONデータは見栄えがよく、URLは正しいので、WebサービスにアクセスしてJSONデータを取得できます。NSURLConnectionデリゲートメソッドも期待どおりに起動します。
以下に欠けているものはありますか?
- (void)SubmitSystems
{
NSFetchRequest * allSystems = [[NSFetchRequest alloc] init];
[allSystems setEntity:[NSEntityDescription entityForName:@"System" inManagedObjectContext:self.managedObjectContext]];
NSError * error = nil;
NSArray * systems = [self.managedObjectContext executeFetchRequest:allSystems error:&error];
//error handling goes here
//for (NSManagedObject * system in systems) {
NSManagedObject *system = systems[2];
NSString *entityString = @"System";
NSString * serverString = [NSString stringWithFormat:@"%@%@", kWebServiceAddress, entityString];
NSURL *url = [NSURL URLWithString:serverString];
NSData* jsonData = [NSJSONSerialization dataWithJSONObject:[self jsonSystemDictionary:(System *)system] options:kNilOptions error:&error];
//NSLog([[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]); //debug only
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy: NSURLRequestReloadIgnoringCacheData timeoutInterval: 30.f];
[request setHTTPMethod:@"POST"];
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setValue:[NSString stringWithFormat:@"%d", [jsonData length]] forHTTPHeaderField:@"Content-Length"];
[request setHTTPBody: jsonData];
self.urlConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
//}
}