0

私はiPhone用のFacebookフィードアプリに取り組んでいます。このアプリは、特に、写真が投稿に添付されているかどうかを判断し、それを配列に保存します。コードを実行すると、objectAtKey:@ "picture"があるかどうかを読み取っていても、NSLogは配列に何も入れられていないことを通知します。以下は私のコードの一部です。

MasterView.mから:

//create array containing individual "datas"
NSArray *items = [json objectForKey:@"data"];

for(NSDictionary *item in items)
{
    // store message in ItemStore sharedStore
    if([item objectForKey:@"message"] || [item objectForKey:@"message"] != nil || 
       [[item objectForKey:@"message"] length] > 0){
        [[JSONFeedItemStore sharedStore] createItem:[item objectForKey:@"message"]];
    }

    // 
    if([item objectForKey:@"picture"]){
        [[JSONFeedItemStore sharedStore] createPicture:[[item objectForKey:@"picture"] description]];
        NSLog(@"url: %@", [item objectForKey:@"picture"]);
    } else {
        [[JSONFeedItemStore sharedStore] createPicture:@"http://i.imgur.com/TpIK5.png"]; // blank
        NSLog(@"creating blank picture");
    }
}

ItemStore.mから

- (void)createPicture:(NSString *)pictureUrl
{
    [pictures addObject:pictureUrl];
    NSLog(@"Number: %d, URL: %@", [pictures count], [pictures objectAtIndex:[pictures count]]);
}

と私のコンソール

2012-08-07 08:21:54.153 JSONFeed[2502:f803] Number: 0, URL: (null)
2012-08-07 08:21:54.154 JSONFeed[2502:f803] creating blank picture
2012-08-07 08:21:54.155 JSONFeed[2502:f803] Number: 0, URL: (null)
2012-08-07 08:21:54.156 JSONFeed[2502:f803] creating blank picture
2012-08-07 08:21:54.157 JSONFeed[2502:f803] Number: 0, URL: (null)
2012-08-07 08:21:54.157 JSONFeed[2502:f803] url: http://photos-a.ak.fbcdn.net/hphotos-ak-ash4/423482_427478620624383_82270372_s.jpg
2012-08-07 08:21:54.158 JSONFeed[2502:f803] Number: 0, URL: (null)
2012-08-07 08:21:54.158 JSONFeed[2502:f803] creating blank picture

SharedStoreは、Facebookの投稿からのメッセージと写真を保存するために作成されたItemStoreクラスの一部です。ご不明な点がある場合、またはコードをさらに表示する必要がある場合は、お気軽にお問い合わせください。私はまだAppsのプログラミングに慣れていないので、改善のための提案も行っています。

4

2 に答える 2

3

1つの可能性はそれpicturesがゼロであるということです。配列が存在しない場合、オブジェクトを配列に追加することはできません。メッセージをnilに送信することは合法です。返される結果もゼロまたはゼロになるため、-objectAtIndex:ログの呼び出しは「(null)」になります。

于 2012-08-07T13:29:27.050 に答える
3

一つには、あなたがこのようなことをするとき。

[array objectAtIndex:[array count]];

プログラミング上のすべての配列は0インデックスであるnilため、定義上、配列の境界を超えているため、オブジェクトを取得します。objectAtIndex:array.count

必要なのは

[array objectAtIndex([array count]-1)];
于 2012-08-07T13:32:40.643 に答える