2016-07-06 19 views
0

私はStorage Firebaseのフォルダイメージを持っています。すべてのイメージをダウンロードしてコレクションビューに表示したいと思います。 しかし、私は問題をフォルダに画像のインデックスを取得したい。 どうすればいいですか?Firebase Storge(Objective-C)のフォルダ内の全イメージをダウンロードする方法

ありがとうございました!

self.storageRef = [[FIRStorage storage] reference]; 
self.imagesArray = [[NSMutableArray alloc]init]; 


[[self.storageRef child:@"IMAGES"] dataWithMaxSize:1 * 1024 * 1024 completion:^(NSData *data, NSError *error) { 
    UIImage *image = [UIImage imageWithData:data]; 
    [self.imagesArray addObject:image]; 

}]; 
self.imageView.image = self.imagesArray.firstObject; 

//私のエラー:理由: '*** - [__ NSArrayMは、insertObject:atIndex:]:オブジェクトがnilすることはできません'

Picture of Storage Firebase

+1

[すべての画像で配列を取得する方法](http://stackoverflow.com/questions/37335102/how-to-get-an-array-with-all-pictures) –

答えて

1

コードを見てとった後、 dataWithMaxSize:completion:への呼び出しが非同期(実行に時間がかかり、したがって完了ブロックを呼び出す前に次の行に移動することを意味する)ということです。あなたはもはやあなたがこれをやっている場合は、配列を必要とすることに注意していないだろうけど

// This runs first 
[[self.storageRef child:@"IMAGES"] dataWithMaxSize:1 * 1024 * 1024 completion:^(NSData *data, NSError *error) { 
    // This runs second 
    UIImage *image = [UIImage imageWithData:data]; 
    [self.imagesArray addObject:image]; 
    // This runs third, and now [self.imagesArray count] == 1 
    // so this doesn't crash the program 
    self.imageView.image = self.imagesArray.firstObject; 
}]; 

:代わりに

// This runs first 
[[self.storageRef child:@"IMAGES"] dataWithMaxSize:1 * 1024 * 1024 completion:^(NSData *data, NSError *error) { 
    // This runs third (well, not at all since the program crashes) 
    UIImage *image = [UIImage imageWithData:data]; 
    [self.imagesArray addObject:image]; 

}]; 
// This runs second, and thus [self.imagesArray count] == 0 
self.imageView.image = self.imagesArray.firstObject; 

は、あなたのような何かをする必要があります。これはオーデル事が呼び出されているあります。

+0

ありがとうございますあなたの助けBro!しかし、私はまだそれを行うことはできません。 self.storageRef = [[FIRストレージストレージ]リファレンス]; self.imagesArray = [[NSMutableArray alloc] init]; [[self.storageRef子:@ "IMAGES"] dataWithMaxSize:1×1024×1024終了:^(のNSData *データ、NSError *エラー){ UIImage *画像= [UIImage imageWithData:データ]。 [self.imagesArray addObject:image]; }]; self.imageView.image = self.imagesArray.firstObject; 私のエラー:理由: '*** - [__ NSArrayM insertObject:atIndex:]:オブジェクトにnilを指定することはできません' –

+0

エラーがあるかどうかをチェックします。エラーが発生しているため、したがって、 'nil'を辞書に追加します(これはできません)。 –

+0

誰かが私と話します。Json DatabaseのimageUrlを保存してください。すべてのJsonデータベースを読み込み、ストレージ内のStorageまたはIndexPathイメージフォルダは気にしないでください。私はすでに試して、それは働いたが、私のtableviewショーイメージは良く見えない。ゆっくりとロードしてインデックスを変えます(例:5つの画像があり、テーブルビューをもう一度スクロールすると、1つの画像、5つのセル、同じ画像だけが再生されます...)何が間違っていましたか?Mike McDonald 。 –

関連する問題