尝试将(NSData从Core Data)转换为UIImage时获得nil

时间:2015-08-15 07:20:42

标签: ios swift core-data

我将核心数据设置如下:

    let appDel: AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate



func saveIntoCoreData(upload: NSData) {

    let context = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext

    var pendingImage = NSEntityDescription.insertNewObjectForEntityForName("PendingImage", inManagedObjectContext: context!) as! PendingImageClass

    pendingImage.pendingImageData = NSData(data: upload)

    var savingError: NSError?
    if context!.save(&savingError) {
        println("saved")
    } else {

        if let error = savingError{
            println("cannot save. error = \(error) ")
        }

    }

}

然后我传递:

       let imageData: NSData! = UIImageJPEGRepresentation(pickedImage.image!, 1.0)

       saveIntoCoreData(imageData!)

然后我尝试通过以下方式获取(从TabBarController获取结果,将NSData保存到Core Data中的不同控制器):

var pendingImages = [PendingImageClass]()

func fetchLog() {

    var requestError: NSError?

    let fetchRequest = NSFetchRequest(entityName: "PendingImage")
    if let fetchResults = context!.executeFetchRequest(fetchRequest, error: &requestError) as? [PendingImageClass] {
        pendingImages = fetchResults
    }
}

在ViewDidLoad中执行以下操作:

let pendingImageDataFromFetch: NSData! = NSKeyedArchiver.archivedDataWithRootObject(pendingImages[0])

    let pendingImageDataFromFetchInImageForm: UIImage? = UIImage(data: pendingImageDataFromFetch)

当我尝试在imageView中显示pendingImageDataFromFetchInImageForm时,我收到一个错误。

我试图println看看它没有经历的是什么,似乎我的pendingImageDataFromFetch被返回nil。

请告知我失踪的是什么。感谢!!!

1 个答案:

答案 0 :(得分:1)

删除let pendingImageDataFromFetch: NSData! = NSKeyedArchiver.archivedDataWithRootObject(pendingImages[0])并替换为

let pendingImageDataFromFetch: NSData! = pendingImages[0].pendingImageData

您不需要对归档器执行任何操作,只需要提取图像数据。

请注意,检查您拥有的结果数量非常重要,而不仅仅是尝试取出第一个结果。