-1
我想將某些UISwitch設置爲由HTTP GET請求拉入的值。請求正在工作。但是,由於我對iOS編程相當陌生,我不知道如何從擁有一些JSON數據到像PHP一樣拉開它。通過JSON數據設置UISwitches?
這是我目前有:
- (void)viewDidLoad
{
[super viewDidLoad];
NSLog(@"viewdidload");
self.responseData = [NSMutableData data];
NSURLRequest *request = [NSURLRequest requestWithURL:
[NSURL URLWithString:@"http://www.test.api/setings"]];
NSMutableURLRequest *mutableRequest = [request mutableCopy];
[mutableRequest addValue:_xAuthToken forHTTPHeaderField:@"X-Auth-Token"];
request = [mutableRequest copy];
[[NSURLConnection alloc] initWithRequest:request delegate:self];
[switch1 setOn:1 animated:NO];
[switch2 setOn:1 animated:NO];
[switch3 setOn:1 animated:NO];
[switch4 setOn:1 animated:NO];
[switch5 setOn:1 animated:NO];
[switch6 setOn:1 animated:NO];
[switch7 setOn:0 animated:NO];
[switch8 setOn:1 animated:NO];
}
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
NSLog(@"didReceiveResponse");
[self.responseData setLength:0];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
[self.responseData appendData:data];
}
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
NSLog(@"didFailWithError");
NSLog([NSString stringWithFormat:@"Connection failed: %@", [error description]]);
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
NSLog(@"connectionDidFinishLoading");
NSLog(@"Succeeded! Received %d bytes of data",[self.responseData length]);
// convert to JSON
NSError *myError = nil;
NSDictionary *res = [NSJSONSerialization JSONObjectWithData:self.responseData options:NSJSONReadingMutableLeaves error:&myError];
// show all values
for(id key in res) {
id value = [res objectForKey:key];
NSString *keyAsString = (NSString *)key;
NSString *valueAsString = (NSString *)value;
NSLog(@"key: %@", keyAsString);
NSLog(@"value: %@", valueAsString);
}
// extract specific value...
NSArray *results = [res objectForKey:@"results"];
for (NSDictionary *result in results) {
NSString *icon = [result objectForKey:@"icon"];
NSLog(@"icon: %@", icon);
}
}
- (void)viewDidUnload {
[super viewDidUnload];
}
而這正是它的從服務器取回:
{"data":
{"setting1":"1",
"setting2":"1",
"setting3":"0",
"setting4":"0",
"setting5":"0",
"setting6":"0",
"setting7":"0",
"setting8":"0"}
}
我很抱歉,如果這聽起來愚蠢的設置開關的狀態,但我不知道如何實現你的代碼到我的... – user4114789 2014-10-12 10:25:59
在你的循環時,烏爾用於獲取對象的鍵返回的對象是nStrings,就像鍵「setting1」你會得到「1」。要使用它來設置開關狀態,您可以將其轉換爲bool值,其中1將轉換爲true/Yes,並將0轉換爲false/No,並通過在該特定開關上調用函數setOn來設置開關的值,就像我上面所做的那樣 – 2014-10-12 10:28:07
@ user4114789我編輯了答案以匹配您的代碼:) – 2014-10-12 10:36:24