iOSで新しく、コアデータをWebサービスと同期させる際に問題が発生しています。私のWebサービスは、これは私が一般的にウェブサービス対象データでコアデータオブジェクトをWebサービスに同期する方法
-(void)serverconnectionPost{
NSString *MethodString [email protected]"?op=Method";
NSString *ServerfullString =[NSString stringWithFormat:@"%@%@",ServerString,MethodString];
int auid=0;
long regionid=[RegionID longLongValue];
long branch=[BranchID longLongValue];
long site=[SiteID longLongValue];
long auditnameid=[AuditNameId longLongValue];
long checkpoint=[CheckPointID longLongValue];
long methodofmeasume=[MethodID longLongValue];
long rdbchecklist=[RDBIDCheckListID longLongValue];
long UserId=[userid longLongValue];
NSString *soapMessage = [NSString stringWithFormat:@"<?xml version=\"1.0\" encoding=\"utf-8\"?>"
"<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"
"<soap:Body>"
"<Method xmlns=\"http://tempuri.org/\">"
"<Key1>%d</Key1>"
"<Key2>%ld</Key2>"
"<Key3>%ld</Key3>"
"<Key4>%ld</Key4>"
"<Key5>%ld</Key5>"
"<Key6>%ld</Key6>"
"<Key7>%ld</Key7>"
"<Key8>%ld</Key8>"
"<Key9>%ld</Key9>"
"</Method>"
"</soap:Body>"
"</soap:Envelope>",auid,regionid,branch,site,auditnameid,checkpoint,methodofmeasume,rdbchecklist,UserId];
NSData *postData = [soapMessage dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%lu",(unsigned long)[soapMessage length]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:ServerfullString]];
[request setHTTPMethod:@"POST"];
[request addValue: @"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
NSLog(@"URL = %@",request);
[request setHTTPBody:postData];
myNSUConnectionPOSTObj = [[NSURLConnection alloc] initWithRequest:request delegate:self];
NSLog(@"Connection link =%@",myNSUConnectionPOSTObj);
if(myNSUConnectionPOSTObj) {
myNSMDataFromPOSTServer =[[NSMutableData alloc] init];
NSLog(@"Connection Successful");
} else {
NSLog(@"Connection could not be made");
}
}
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
[myNSMDataFromPOSTServer setLength:0];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
[myNSMDataFromPOSTServer appendData:data];
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection{
NSXMLParser *myNSXMLParserPostObj=[[NSXMLParser alloc]initWithData:myNSMDataFromPOSTServer];
myNSXMLParserPostObj.delegate=self;
[myNSXMLParserPostObj parse];
NSLog(@"%@",myNSXMLParserPostObj.parserError);
NSString *responseStringWithEncoded = [[NSString alloc] initWithData: myNSMDataFromPOSTServer encoding:NSUTF8StringEncoding];
//NSLog(@"Response from Server : %@", responseStringWithEncoded);
NSAttributedString * attrStr = [[NSAttributedString alloc] initWithData:[responseStringWithEncoded dataUsingEncoding:NSUnicodeStringEncoding] options:@{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType } documentAttributes:nil error:nil];
serverResponse.attributedText = attrStr;
NSString *Str =serverResponse.text;
NSLog(@"Server Response =%@",Str);
alert3 = [[UIAlertView alloc] initWithTitle:@"Message to display"
message:Str
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert3 show];
}
-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
myMutableStringPOSTObj=[[NSMutableString alloc]initWithString:string];
NSLog(@"Array String: %@",myMutableStringPOSTObj);
NSData *dataPost = [myMutableStringPOSTObj dataUsingEncoding:NSUTF8StringEncoding];
responsePOSTdict = [NSJSONSerialization JSONObjectWithData:dataPost options:0 error:nil];
NSLog(@"JSON DATA = %@",responsePOSTdict);
}
-(IBAction)joinbtnClick:(id)sender
{
[self serverconnectionPost];
}
ノートにデータをポストするためのコードを使用する方法です。この
POST /webservice.asmx HTTP/1.1
Host: Url
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://tempuri.org/Method"
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<Method xmlns="http://tempuri.org/">
<key1>int</key1>
<key2>long</key2>
<key3>long</key3>
<key4>long</key4>
<key5>long</key5>
<key6>long</key6>
<key7>long</key7>
<key8>long</key8>
<key9>long</key9>
</Method>
</soap:Body>
</soap:Envelope>
私はコアデータにデータを保存していますか
この
NSManagedObjectContext *context = [self managedObjectContext];
if (self.device) {
// Update existing device
[device setValue:Audit forKey:@"Key1"];
[device setValue:MethodID forKey:@"Key2"];
[device setValue:CheckPointID forKey:@"Key3"];
[device setValue:GlobalStringChk forKey:@"Key4"];
[device setValue:RegionID forKey:@"Key5"];
[device setValue:BranchID forKey:@"Key6"];
[device setValue:SiteID forKey:@"Key7"];
[device setValue:AuID forKey:@"Key8"];
[device setValue:userid forKey:@"Key9"];
} else {
// Create a new device
NSManagedObject *newDevice = [NSEntityDescription insertNewObjectForEntityForName:@"Entity Name" inManagedObjectContext:context];
[newDevice setValue:Audit forKey:@"Key1"];
[newDevice setValue:MethodID forKey:@"Key2"];
[newDevice setValue:CheckPointID forKey:@"Key3"];
[newDevice setValue:GlobalStringChk forKey:@"Key4"];
[newDevice setValue:RegionID forKey:@"Key5"];
[newDevice setValue:BranchID forKey:@"Key6"];
[newDevice setValue:SiteID forKey:@"Key7"];
[newDevice setValue:AuID forKey:@"Key8"];
[newDevice setValue:userid forKey:@"Key9"];
}
NSError *error = nil;
// Save the object to persistent store
if (![context save:&error]) {
NSLog(@"Can't Save! %@ %@", error, [error localizedDescription]);
}
NSManagedObjectContext *managedObjectContext = [self managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Entity Name"];
self.devices = [[managedObjectContext executeFetchRequest:fetchRequest error:nil] mutableCopy];
のようなものです - ServerStringにはWebサービスのURLが含まれます。
Webサービスと1つの値を同期させてから、それをコアデータから削除してから、syncのような別の値を削除する必要があります。
コアデータをWebサービスに同期する方法。誰でもこれを行った。前もって感謝します!
なぜあなたはデータを投稿するAFNetworkingフレームワークを使用していません?非常にシンプルで、すべての必要なシナリオを処理します。 –
@VishalSonawane私はXMLParsingを使用しており、AFNetworkingはJSON解析用です。私が検索するときにAFNNetworkingがJSON Parsingを受け取るかどうかわかりません。 – Muju
私の答えを確認してください。 –