2016-08-16 8 views
-3

まず、このサイトで私はそれについて何も知りませんでした。アプリを終了したり、アプリを終了したりした後に、画像を再度ダウンロードしないようにしてください。

NSURLNSUserDefaultsに保存して、開いているすべてのアプリケーションまたは開いているビューに画像を読み込まないようにします。私はこれを達成しようとしましたが何らかの理由で私はできません。少なくとも私はそれが何をすべきか考えています:

私が間違っている場合は、私を修正してください。 url-sをuserdefaultsに保存するとすべきことはありますか?

私はここで間違っていますか?たぶんそれをCoreDataに保存する方が良いですが、それは過度のことだと思いました。

なぜをKingFisherまたはSDWebImagesライブラリは、それをキャッシュされていませんか?

+1

http://stackoverflow.com/questions/38943645/uploading-downloading-multiple-images-the-right-wayを見て、SDWebImageやPINRemoteImageなどのツールと組み合わせて使用​​することを強くお勧めします。 CoreDataとこのアプリケーションのための 'NSUserDefaults'より良い解決策があります:) –

+0

Ooh ..最後にdownvoteではない何か。だからあなたが言ったことによると、私はダウンロードURLが決して変わることを理解していますか?だから私は配列とuserdefaultsにそれらを格納する必要はありませんか? –

+1

いいえ、両方のURLタイプ( 'gs://'と 'https://')は安定しています。 libをロードしているサードパーティ製のイメージやキャッシュには、 'https:// 'というパブリックなものを使いたいでしょう。リアルタイムデータベースにはオフラインの永続性があるので、コールドスタート時にURLを取得する必要はありません。 –

答えて

1

あなたは以下のようなURLを保存する必要があります。

let defaults = NSUserDefaults.standardUserDefaults() 
defaults.setURL(yourURL:NSURL?, forKey: "imageURL") 

をそして、このようなNSUserDefaultsをお読みください。

let defaults = NSUserDefaults.standardUserDefaults() 
defaults.URLForKey("imageURL") 

・ホープ、このことができます。

+0

更新私の答えを見てください –

1

2つのことが役に立ちます:synchronizeをデフォルトに保存してから使用し、URLForKeyを使用して元に戻します。

(。そして、あなたが保存している事が本当にNSURLであることを確認してください)

ここでのプロジェクトで動作するサンプルコードです。あなたにそれを比較する(NSUserDefaultsは、遊び場のために壊れている。):

let defaults = NSUserDefaults.standardUserDefaults() 
    if let components = NSURLComponents(string: "http://localhost/"), 
     url = components.URL { 
     defaults.setURL(url, forKey: "imageUrl") 
     defaults.synchronize() 
     if let fetchedURL = defaults.URLForKey("imageUrl") { 
      print("\(fetchedURL) returned") 
     } else { 
      print("No URL in defaults") 
     } 
    } else { 
     print("Bad components") 
    } 
    print(defaults.dictionaryRepresentation()) 
0

私が理解できるように、あなたが複数の画像にURLを保存したいNSUserDefaults

let url = NSURL(string: "http://localhost/") 
    var array = [NSString]() 
    array.append((url?.absoluteString)!) 

    NSUserDefaults.standardUserDefaults().setValue(array, forKey: "image") 
    NSUserDefaults.standardUserDefaults().synchronize() 

    if let fetchedURL = NSUserDefaults.standardUserDefaults().valueForKey("image") as! [String]? { 
     print("\(fetchedURL[0]) returned") 
     let fileUrl = NSURL(string: fetchedURL[0]) 
     print(fileUrl) 
    } else { 
     print("No URL in defaults") 
    } 

印刷結果に

http://localhost/

を返さ

オプション(http://localhost/

関連する問題