我将核心数据设置如下:
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。
请告知我失踪的是什么。感谢!!!
答案 0 :(得分:1)
删除let pendingImageDataFromFetch: NSData! = NSKeyedArchiver.archivedDataWithRootObject(pendingImages[0])
并替换为
let pendingImageDataFromFetch: NSData! = pendingImages[0].pendingImageData
您不需要对归档器执行任何操作,只需要提取图像数据。
请注意,检查您拥有的结果数量非常重要,而不仅仅是尝试取出第一个结果。