2016-07-01 2 views
1

'NSUserDefaults'또는 'document directory'또는 'core data'에 이미지 배열 'DtaAryVar'을 저장하려고합니다. 누구나 'NSArray'배열 (20 개 이미지 포함)을 'NSData'변환으로 저장하는 가장 쉽고 간단한 방법을 알려주십시오. 내 '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 만있는 NSData를 저장하거나 할 수 coreData하지 [있는 NSData]

| => 핵심 데이터 UR 저장은 이진 입력 속성을 할당하면

| * | 코어 데이터에 Raw 데이터 행 추가 :

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) 
    } 
} 
따라 시도