在自定义对象中存储UIImage失败

时间:2016-03-28 15:47:20

标签: ios swift uiimage

我有一个名为report的自定义对象,其属性为commentimage。在prepareForSegue - 方法中我可以轻松调用report.comment = "Comment"这很好用......没问题。然后我想设置图像 当新的ViewController显示时,没有显示图像,但是注释已设置。

if let imageData = valueDict.valueForKey("image")
{
  print(imageData)
  print("Before processing: \(report.image)") //report.image has a standard value; UIImage()
  report.image = UIImage(data: imageData as! NSMutableData, scale: 1.0)!
  print("After processing: \(report.image)")
}

我确信第一个print()语句会向我显示原始图像数据。我得到像<ffd8ffe0 00104a46 49460001 01000048... and so on这样的东西。我也没有收到错误消息,但图像没有显示。似乎转换方法不起作用。转换后,我得到类似<UIImage: 0x7ff6f858bda0>, {1080, 1080}的内容。即使我设置了像report.image = UIImage(named: "defaultPhoto.png")!这样的静态图像,也不会显示图像。

我也尝试过以下电话

report.image = UIImage(data: valueDict.valueForKey("image") as! NSData)!
report.image = (valueDict.objectForKey("image") as? UIImage)!
report.image = UIImage(data: valueDict.objectForKey("image"))
report.image = valueDict["image"] as! UIImage

但没有任何效果。 所以主要问题是:为什么转换方法不能按预期工作。 我知道很难说对于那​​些不了解该项目的人来说是错误的,但也许你有一个暗示或建议我可以检查或寻找什么。 任何帮助表示赞赏。

编辑:

我为Segue-Method做准备就像这样。

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
    {

        let dtvc: DetailReportTableViewController = segue.destinationViewController as! DetailReportTableViewController

        let indexPath = tableView.indexPathForSelectedRow

        let cell = tableView.cellForRowAtIndexPath(indexPath!) as! MyReportsTableViewCell
        print("The ReportNumber is: \(cell.reportNumber)")

        for singleReport in listOfAllReports
        {
            if singleReport.key as! String == cell.reportNumber
            {
                print("Bericht gefunden.")
                let valueDict = singleReport.value as! NSDictionary

                report.category = valueDict.objectForKey("category") as! String
                report.comment = valueDict.objectForKey("comment") as! String


                if let dateTime = valueDict.objectForKey("date")
                {
                    let df = NSDateFormatter()
                    df.dateFormat = "dd-MM-yyy HH:mm:ss"

                    report.timestamp = df.dateFromString(dateTime as! String)!
                }

                if let locationData = valueDict.valueForKey("location")
                {
                    report.locationData.längengrad = locationData.objectAtIndex(0) as! Double
                    report.locationData.breitengrad = locationData.objectAtIndex(1) as! Double
                }

                if let imageData = valueDict.valueForKey("image")
                {
                    print(imageData)
                    print("Before processing: \(report.image)") //report.image has a standard value; UIImage()
                    report.image = UIImage(data: imageData as! NSMutableData, scale: 1.0)!
                    print("After processing: \(report.image)")
                }

            }

        }
        print("Category: \(report.category)")
        print("Datum: \(report.timestamp)")
        print("Location: \(report.locationData)")
        print("Comment: \(report.comment)")
        print("Image: \(report.image)")

        dtvc.report = report

    }

1 个答案:

答案 0 :(得分:0)

如果

  

即使我设置了静态图像......图像也未显示

是真的,问题可能在于UIImageView,而不是图像本身。

我很确定

  

UIImage:0x7ff6f858bda0,{1080,1080}

显示内存位置和图像大小。 (我猜你的图像是1080x1080?)所以我认为你正确地创建了图像,它只是没有显示。

检查您的图片视图是否可见,而不是在其他视图下方,并正确连接到您的笔尖。