2016-07-01 7 views
1

イメージアレイ 'DtaAryVar'を 'NSUserDefaults'または 'ドキュメントディレクトリ'または 'コアデータ'に保存します。誰もが、 'NSData'変換に 'UIImage'配列(20個の画像が含まれています)を保存するのに最適で簡単な方法を教えてください。私の「DtaAryVar」には20枚の画像が含まれています。私はスタックオーバーフローから見つけたが、エラーを取得する方法の下で試してみました。私を助けてください。イメージアレイの保存と読み込み

var DtaAryVar: [NSData]() 
convert array of NSData to Data and store 

let DtaZipVar = NSKeyedArchiver.archivedDataWithRootObject(DtaAryVar) 

let DftSdbVal = NSUserDefaults.standardUserDefaults() 
DftSdbVal.setObject(DtaZipVar, forKey: "ImageKey") 

get back data by 

var DtaZipVar = DftSdbVal.valueForKey("ImageKey") 
var DtaAryVar = NSKeyedUnarchiver.unarchiveObjectWithData(DtaZipVar) as! [NSData] 

let ImjAryVar = [UIImage]() 
for DtaIdxVar in DtaAryVar 
{ 
    ImjAryVar.append(UIImage(data : DtaIdxVar)) 
} 

エラー は、型の値に変換できません 'ANYOBJECTを?'期待される引数型 'NSDataに変換します。

enter image description here

答えて

0

| => UがuserDefautls又はcoreDataない[たNSData]

のみたNSDataを格納することができる| =>コアデータにおけるUR記憶は、バイナリ

として属性タイプを割り当てる場合

| * |コアデータにローデータを追加する:

let NewRowDtaVar = NSEntityDescription.insertNewObjectForEntityForName("NamTbl", inManagedObjectContext: ContxtVar) 
NewRowDtaVar.setValue(ImgDtaVar, forKey: "NamKol") 
AppDgtVar.saveContext() 

| * | CoreDataから行データを取得します。

let GetDtaAryReqVar = NSFetchRequest(entityName: "NamTbl") 
GetDtaAryReqVar.returnsObjectsAsFaults = false 
GetDtaAryReqVar.predicate = NSPredicate(format: "NamKol = TstTxt") 

let ImgDtaVar = NSData() 
do 
{ 
    let ReqResAryVar: Array = try ContxtVar.executeFetchRequest(GetDtaAryReqVar) 

    if(ReqResAryVar.count > 0) 
    { 
     for ReqResVar in ReqResAryVar 
     { 
      ImgDtaVar = ReqResVar.valueForKey("NamKol") as! NSData! 
     } 
    } 
} 
catch let ErrVar as NSError 
{ 
    print("Fetch failed: \(ErrVar.localizedDescription)") 
} 

は、あなたのViewControllerクラスのいずれかの外に以下の拡張機能を追加し、

extension UIImage 
{ 

//|*| Convert Image NSData Arry to UIImage Array 

    func CnvDtaAryTooImjAryFnc(ImjDtaAryPsgVar: [NSData])-> [UIImage] 
    { 
     var ImjAryVar = [UIImage]() 
     for DtaIdxVar in ImjDtaAryPsgVar 
     { 
      ImjAryVar.append(UIImage(data : DtaIdxVar)!) 
     } 
     return ImjAryVar 
    } 

//|*| Convert Image NSData to UIImage Array 

    func CnvDtaTooImjAryFnc(ImjDtaPsgVar: NSData)-> [UIImage] 
    { 
     let ImjAryVar = NSKeyedUnarchiver.unarchiveObjectWithData(ImjDtaPsgVar) as! [NSData] 
     return CnvDtaAryTooImjAryFnc(ImjAryVar) 
    } 

//|*| Convert UIImage Array to Image NSData Arry 

    func CnvImjAryTooDtaAryFnc(ImjDtaPsgVar: [UIImage], ImjTyp ImjTypPsgVar: String?="Jpg")-> [NSData] 
    { 
     var ImjDtaAryVar = [NSData]() 
     for DtaIdxVar in ImjDtaPsgVar 
     { 
      if(ImjTypPsgVar == "Png") 
      { 
       if let GetImjDtaVar = UIImagePNGRepresentation(DtaIdxVar) 
       { 
        ImjDtaAryVar.append(GetImjDtaVar) 
       } 
      } 
      else 
      { 
       if let GetImjDtaVar = UIImageJPEGRepresentation(DtaIdxVar, 1) 
       { 
        ImjDtaAryVar.append(GetImjDtaVar) 
       } 
      } 
     } 
     return ImjDtaAryVar 
    } 

//|*| Convert UIImage Array to Image NSData 

    func CnvImjAryTooDtaFnc(ImjDtaPsgVar: [UIImage], ImjTyp ImjTypPsgVar: String?="Jpg")-> NSData 
    { 
     let ImjDtaAryVar = CnvImjAryTooDtaAryFnc(ImjDtaPsgVar, ImjTyp : ImjTypPsgVar) 
     return NSKeyedArchiver.archivedDataWithRootObject(ImjDtaAryVar) 
    } 
} 
応じてみてください
関連する問題