2017-02-02 14 views
1

私は辞書offlineImages = [String: UIImage]()を持っており、それをCoreData/UserDefaultsに保存したいと思います。私はこれをどのようにして行うことができ、最良の選択肢は何ですか? (offlineImages配列は、画像のローカルURLを含む)[String:UIImage]タイプのディクショナリをCoreData/UserDefaultsに保存するにはどうすればよいですか?

は、ファイルシステムを使用してみましたが、画像は表示されません。

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCell(withIdentifier: "offlineCell") 
    let mainImageView = cell?.viewWithTag(2) as! UIImageView 
    let mainImageURL = offlineImages[indexPath.row] 
    let mainImageData = NSData(contentsOf: mainImageURL) 
    let mainImage = UIImage(data: mainImageData! as Data) 
    mainImageView.image = mainImage 
    return cell! 
} 
+0

を取得しないでください。イメージをファイルシステムに書き出します。そして、大量のデータをNSUserDefaultsに書き込むことは絶対にしないでください。これは、少しのデータを対象としています。 – rmaddy

+0

@rmaddy、どうすればCoreDataに保存できますか? – abcd

+2

あなたはしません。イメージをファイルシステムに書き込みます。コアデータにファイル名を格納するだけです。 – rmaddy

答えて

0

.xcdatamodeldファイルに変換可能タイプを使用して辞書の属性を作成します。そして、辞書

+0

申し訳ありませんが、 "CoreDataサブクラスを生成しました"という意味は分かりません。 – abcd

+0

属性を使ってエンティティを設定したら、それらのサブクラスを生成する必要があります。あなたはこれをやりましたか? – Artem

+0

まだありません。 CoreDataの使い方は正確には分かりません。私はチュートリアルを見てきましたが、それは文字列のためのものでした。 – abcd

-1

へのidから生成されたエンティティのサブクラス変化型では、NSDataのに画像を変換することができ、これ

NSData *imageData = UIImagePNGRepresentation(image); 

[selectedObject setValue:imageData forKey:@"imageEntity"]; // selectedObject refers to NSManagedObject 

ようCoreData(バイナリデータ)に保存し、画像

NSManagedObject *selectedObj = [[self fetchedResultsController] objectAtIndexPath:indexPath]; 
UIImage *image = [UIImage imageWithData:[selectedObject valueForKey:@"image"]]; 
[self.imageView setImage:image] 
関連する問題