0

Firebase Storage について頭を悩ませようとしています。私はオンラインで見て、画像を取得する 2 つの方法を試しました。これら2つの違いは何ですか?(両方とも動作します)。

Firebase データベースから photoUrl を取得した後:

1.

if let data = NSData(contentsOfURL: NSURL(string:photoUrl)!)
{
     let myImage = UIImage(data: data)!

     MyImageCache.sharedCache.setObject(myImage, forKey: self.key)
     //etc
 }

2.

 self.storage.referenceForURL(photoUrl).dataWithMaxSize(1 * 1024 * 1024) { (data, error) -> Void in
    if (error != nil)
    {
         print(error)
    }
    else
    {
        let myImage = UIImage(data: data!)

        MyImageCache.sharedCache.setObject(myImage!, forKey: self.key) 
        //etc       
    }
}
4

1 に答える 1

0

最初の方法に関しては、ネットワーク呼び出しに使用しないでください。ドキュメントから:

この同期メソッドを使用して、ネットワーク ベースの URL を要求しないでください。ネットワークベースの URL の場合、このメソッドは低速ネットワークで現在のスレッドを数十秒間ブロックする可能性があり、その結果、ユーザー エクスペリエンスが低下し、iOS ではアプリが終了する可能性があります。代わりに、ファイル以外の URL の場合は、NSURLSession クラスの dataTaskWithURL:completionHandler: メソッドの使用を検討してください。詳細については、URL セッション プログラミング ガイドを参照してください。

2 番目の方法は、firebase フレームワークに組み込まれており、画像をダウンロードするための便利な方法を提供します。つまり、画像サイズを指定するオプションを提供します。これはおそらく画像を取得するために最適化されており、ほとんどのシナリオで推奨される方法です。

于 2016-06-17T08:47:53.923 に答える