0

void メソッドから json 文字列を取得したいので、見てみましょう

-(void) getIDfromMarket{}

getIDfromMarket から結果の json を表示したいのですが、既に成功しています。

-(void)viewDidLoad

どうやってするか?これが私のコードです

#import "ViewController.h"
@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    [self getIDfromMarket];
     NSLog(@"ID==",ID);
    // Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

//////get global market From JSOn
-(void) getIDfromMarket{
    NSError *error = nil;
    ///set params url to get market localization
    NSData *jsonData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://someurl"]];
    if (jsonData) {
    id jsonObjects = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error];
    NSArray *Market = [jsonObjects objectForKey:@"market"];
        NSLog(@"%@", Market);
        if(Market==NULL){
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Oh Snap!" message:@"Can't Get Market ID " delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil];
            [alert show];

        }
    }
    else{

        NSLog(@"Error Fetch Market ID");
 }

}

@end

viewDidLoad 以外でログオンしたいのですがNSLog(@"%@", Market);、どうすればよいですか?

4

3 に答える 3

2
-(NSArray *) getIDfromMarket{
    NSError *error = nil;
    ///set params url to get market localization
    NSData *jsonData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://someurl"]];
    if (jsonData) {
        id jsonObjects = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error];
        NSArray *Market = [jsonObjects objectForKey:@"market"];
        NSLog(@"%@", Market);
        if(Market==nil){
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Oh Snap!" message:@"Can't Get Market ID " delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil];
            [alert show];
            return nil;
        } else {
            return Market;
        }
    }
    else{

        NSLog(@"Error Fetch Market ID");
        return nil;
 }

}
于 2012-10-08T07:36:46.260 に答える
1

market がメンバー変数の場合、viewDidLoad にログインできます。または戻り値-(id)getIDfromMarket;

-(id) getIDfromMarket{
    // your code
    return market; // autorelase
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    NSArray *lArray  = [self getIDfromMarket];// autorelase
    NSLog(@"ID==",lArray);

}
于 2012-10-08T07:29:18.963 に答える
0

JSON リクエストから返された結果を使用できるようにする場合は、getIDFromMarket の戻り値の型を (void) から (NSArray) に変更し、リクエストが成功した場合はメソッドの最後で「return Market」と入力します。失敗して nil を返します。

次に、-(void) viewWillApper から NSArray *thisArray = [getIDFromMarket]; のようなメソッドを呼び出します。

ここから、配列にあるものを使用して、ビューが読み込まれる前に画面上にデータを設定できます

もう 1 つのオプションは、NSArray のプロパティを持つことです。結果が返されたら、それをこのプロパティに格納し、後でそのクラスの任意のメソッドからアクセスできます。

お役に立てれば

//////get global market From JSOn
-(NSArray) getIDfromMarket{
    NSError *error = nil;
    ///set params url to get market localization
    NSData *jsonData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://someurl"]];
    if (jsonData) {
    id jsonObjects = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error];
    NSArray *Market = [jsonObjects objectForKey:@"market"];
        NSLog(@"%@", Market);
        if(Market==NULL){
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Oh Snap!" message:@"Can't Get Market ID " delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil];
            [alert show];
            return nil;
        }
        else {
            return Market;
        }
    }
    else{
        NSLog(@"Error Fetch Market ID");
        return nil;
 }

}

その後、表示されます

- (void)viewWillAppear
{
    [super viewWillAppear];

    NSArray *results = [self getIDfromMarket];
     NSLog(@"ID==%@",results);
}
于 2012-10-08T07:25:24.957 に答える