0

このサイトにも同様の質問がありますが、その質問に質問の形で別のコメントを追加することはできないので、ここに私のものを書くことにしました。ごめんなさい。

ローカルサーバーにJSONファイルがあり、UIPickerViewの値にアクセスしようとしています。問題は、JSONファイルの文字列の代わりに「疑問符、つまり「?」」が表示されることです。問題は何ですか、どうすればこれを解決できますか?私はまだ初心者なので、気楽に行ってください。

これがコードです、

#import "ViewController.h"
#import "JSON.h"

@interface ViewController ()

@end

@implementation ViewController

@synthesize picker;
@synthesize terrainJsonArray;

- (void)viewDidLoad
{
[super viewDidLoad];

NSString *terrainString = [NSString stringWithFormat:@"http://terrainracing.com/ios/events_json.php"];

NSURL *terrainUrl = [NSURL URLWithString:terrainString];

NSData  *terrainData = [NSData  dataWithContentsOfURL:terrainUrl];

NSError *error;

self.terrainJsonArray = [NSJSONSerialization JSONObjectWithData:terrainData options:kNilOptions error:&error];

NSLog(@"%@", terrainJsonArray);

}

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

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 1;
}

- (NSInteger)pickerView:(UIPickerView *)pickerView
 numberOfRowsInComponent:(NSInteger)component {
return self.terrainJsonArray.count;
}

#pragma mark Picker Delegate Methods
- (UIView *)pickerView:(UIPickerView *)pickerView
         titleForRow:(NSInteger)row
{

return [self.terrainJsonArray objectAtIndex:row];

}
@end

ここに画像の説明を入力してください

4

1 に答える 1

2

デリゲートメソッドを修正することから始め- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)componentます-UIViewではなくNSStringを返します。それが機能するには、明らかに文字列を返す必要があります。

私はあなたの応答項目で次のように見ることができます

{"event_name":"Phoenix","date":"Oct 27","event_id":"14"}

したがって、表示する「サブアイテム」の文字列を取得する必要があります

例えば

return [[self.terrainJsonArray objectAtIndex:row] valueForKey:@"event_name"];
于 2012-12-18T12:28:22.680 に答える