2016-04-25 12 views
2

Ich bin neu in iOS Ich muss bestimmte Objekt für Schlüssel in Textansicht oder Picker-Ansicht mit Post-Methode Antwort zeigen.Post-Methode in Nsurlconnection in IOS

Codierung:

NSString *parameter = [NSString stringWithFormat:@"username=%@",user]; 
      NSData *parameterData = [parameter dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES]; 

      url = [NSURL URLWithString: URL]; 
      NSLog(@"%@", parameterData); 
    request = [NSMutableURLRequest requestWithURL:url]; 
[request setHTTPBody:parameterData]; 

      NSString *content = [NSString stringWithUTF8String:[parameterData bytes]]; 

        } 

     [request setHTTPMethod:method]; 
     [request addValue: @"application/x-www-form-urlencoded; charset=utf-8" forHTTPHeaderField:@"Content-Type"]; 
     NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self]; 

    if(connection) 
     { 
      mutableData = [NSMutableData new]; 

     } 
    } 

Delegatmethode:

-(void)connectionDidFinishLoading:(NSURLConnection *)connection 
{ 
    NSString *responseStringWithEncoded = [[NSString alloc] initWithData: mutableData encoding:NSUTF8StringEncoding]; 
     // NSLog(@"Response from Server : %@", responseStringWithEncoded); 

    NSError* error; 
    NSDictionary* json = [NSJSONSerialization JSONObjectWithData: mutableData 
                 options:kNilOptions 
                  error:&error]; //Now we got top level dictionary 
    // (2) 

    arrdata =[json objectForKey:@"Branches"]; 
    //(2) 
    NSLog(@"%@",[arrdata valueForKey:@"id"]); 



    NSAttributedString * attrStr = [[NSAttributedString alloc] initWithData:[responseStringWithEncoded dataUsingEncoding:NSUnicodeStringEncoding] options:@{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType } documentAttributes:nil error:nil]; 
    serverResponse.attributedText = attrStr; 
    //serverResponse.text = arrdata; 
} 

Ich zeigte erfolgreich in NSLog wie folgt:

screen shot "id" displayed in nslog but not in textview

Aber in textview ist es nicht aktualisieren. Wie kann ich das beheben?

+1

die Daten, die Sie, dass die Daten auf Textview zeigen zeigen wollen bedeutet, zeigen Sie den Screenshot von nslog –

+1

Sind Sie sicher, dass ServerResonse mit Ihrer Komponente verknüpft ist? – CZ54

+0

Zuerst hart-Code einen Text auf die ServerResponse und sehen, ob es funktioniert. –

Antwort

0
serverResponse.text = [arrdata valueForKey:@"id"]; 
+0

funktioniert nicht ..... –

0

Alle Änderungen an der Benutzeroberfläche muss in Main Thread ausgeführt werden.

Daher wahrscheinlich das Problem sein könnte.

so, am Ende des connectionDidFinishLoading Wrap textview mit Hauptwarteschlange GCD wie unten:

dispatch_async(dispatch_get_main_queue(),^ { 

     //Update text view 
     serverResponse.attributedText = attrStr; 
    }); 
+0

@ A.sonu Wenn immer noch nicht funktioniert dann, beziehen Sie sich auf diesen Beitrag http://StackOverflow.com/Questions/15039374/update-view-Controller-after -connectiondidfinishloading-is-called – byJeevan

+0

Dies sollte nicht notwendig sein, da die Delegate-Methode auf den Haupt-Thread selbst ausgelöst wird. –

+0

Hallo @byJeevan, Ich bin nicht wirklich klar, was Sie gesagt haben. Willst du sagen, dass der Delegat in einem anderen Thread aufgerufen wird als der UI-Thread (Haupt-Thread)? –

0

Versuchen Sie, den folgenden Code aus:

dispatch_async(dispatch_get_main_queue(),^ { 
     //Update your UI Component here 

     serverResponse.attributedText = attrStr; 

     //or uncomment below line and comment upper line 
     //serverResponse.text = [arrdata valueForKey:@"id"]; 
    }); 
Verwandte Themen