0

iPhone開発は初めてです。JSON解析を使用してWebサービスからデータを取得したいのですが、ここにコードがあります

-(void)loadDataSource

  {

   NSString *URLPath = [NSString stringWithFormat:@"https://ajax.googleapis.com/ajax/services/feed/find?v=1.0&q=Official%20Google%20Blogs"];


  NSURL *URL = [NSURL URLWithString:URLPath];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:URL];


 [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {

    NSInteger responseCode = [(NSHTTPURLResponse *)response statusCode];

    if (!error)// && responseCode == 200)
    {
        id res = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];

        if (res && [res isKindOfClass:[NSDictionary class]])
        {

           self.dict=[res objectForKey:@"responseData"];  
          self.items = [self.dict objectForKey:@"entries"];
            [self dataSourceDidLoad];
        } 
        else 
        {
            [self dataSourceDidError];
        }
    } 
    else 
    {
        [self dataSourceDidError];
    }
}];

}

このコードを実行すると何も表示されず、インデックスのコレクションビューのコードは

- (PSCollectionViewCell *)collectionView:(PSCollectionView *)collectionView viewAtIndex:(NSInteger)index 

{

NSDictionary *item = [self.items objectAtIndex:index];

PSBroView *v = (PSBroView *)[self.collectionView dequeueReusableView];
if (!v) 
{
    v = [[PSBroView alloc] initWithFrame:CGRectZero];
}

[v fillViewWithObject:item];

return v;

}

fillViewWithObjectのコードの下

- (void)fillViewWithObject:(id)object
{
[super fillViewWithObject:object];

self.captionLabel.text = [object objectForKey:@"title"];
}
4

1 に答える 1

1

これを実行すると、エラーとして「不正なURL」が表示されるため、エラーをチェックしなかったようです。また、「引数よりも変換率が高い」というコンパイラの警告が表示されます。これは、URL文字列の%が原因です。stringWithFormatを使用するべきではありません-リテラル文字列を渡すだけで、機能するはずです:

NSString *URLPath = @"https://ajax.googleapis.com/ajax/services/feed/find?v=1.0&q=Official%20Google%20Blogs";

このエラー(または単に無駄なコード)がよく見られます。フォーマット文字列と引数を指定しない限り、stringWithFormatを使用しないでください。

于 2012-11-06T21:00:50.077 に答える