我有一个名为report
的自定义对象,其属性为comment
和image
。在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
}
答案 0 :(得分:0)
如果
即使我设置了静态图像......图像也未显示
是真的,问题可能在于UIImageView,而不是图像本身。
我很确定
UIImage:0x7ff6f858bda0,{1080,1080}
显示内存位置和图像大小。 (我猜你的图像是1080x1080?)所以我认为你正确地创建了图像,它只是没有显示。
检查您的图片视图是否可见,而不是在其他视图下方,并正确连接到您的笔尖。