iOS iOS6 iOS7 iPadアプリ iPhoneアプリ Xcode アプリ開発

[XCODE] 非同期通信でJSONデータを取得し処理させる

非同期通信でJSONデータを取得して処理をさせます。

非同期通信は結構簡単にできます。そしてJSONデータの読み込みも比較的簡単な方法です。

あとは通信時のエラー処理など、所々に気を遣えば、コードの完成となります。

NSDictionary *jsonDicObj;

- (void)getInformation
{
	NSString *url =@“someURL”
	NSURL *myURL = [NSURL URLWithString:url];
	NSURLRequest *urlRequest = [NSURLRequest requestWithURL:myURL cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:0];
	conect = [NSURLConnection connectionWithRequest:urlRequest delegate:self];
}

// 接続成功してレスポンスが返ってきた時
- (void) connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
    data = [[NSMutableData alloc] init];
}

// サーバからデータが送られた時
- (void)connection:(NSURLConnection *)conn didReceiveData:(NSData *)receivedData {
    [data appendData:receivedData];
}

// データ受信完了
- (void)connectionDidFinishLoading:(NSURLConnection *)connection{
    NSError*   error = nil;
    NSString *str = connection.originalRequest.URL.absoluteString;
    jsonDicObj = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:&error];
    NSOperationQueue *mainQueue = [NSOperationQueue mainQueue];
    [mainQueue addOperationWithBlock:^{
        // ここにUIの処理を記述
        if ( ![[jsonDicObj valueForKey:@“key”] isEqualToString:@""] ) {
        	// keyという要素があった場合の処理など	
        }
    }];
}
// 通信失敗時
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{
    UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"エラー" message:@"通信に失敗しました。" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
    [alert show];
}

-iOS, iOS6, iOS7, iPadアプリ, iPhoneアプリ, Xcode, アプリ開発
-, , , , , , ,

Copyright© LAPTURE , 2020 All Rights Reserved.