2016-03-28 33 views
0

我有一個名爲report的自定義對象,其屬性爲commentimage。在prepareForSegue - 方法我可以很容易地打電話report.comment = "Comment"這工作正常...沒問題。然後我想設置圖像 ,並且當新的ViewController顯示沒有圖像顯示,但評論已設置。在自定義對象中存儲UIImage失敗

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公司-方法看起來是這樣的。

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

你的prepareForSegue是什麼樣的? – beyowulf

+0

我編輯了我的帖子向你展示了我的prepareForSegue-Method – user1895268

+0

代碼是什麼樣的,顯示report.image? – beyowulf

回答

0

如果

,甚至當我設置一個靜態圖像...圖像不顯示

是真實的,這個問題很可能與的UIImageView,而不是圖像本身。

我敢肯定

的UIImage:0x7ff6f858bda0,{1080,1080}

是顯示存儲位置以及圖像的大小。 (我猜你的圖像是1080x1080?),所以我認爲你正在創建圖像,它只是沒有被顯示。

檢查您的圖像視圖是否可見,不低於其他視圖,並且已正確連接到您的筆尖。

+0

謝謝你的回答,但它很奇怪。值'UIImage:0x7ff6f858bda0,{1080,1080}'不可能是正確的。因爲我知道原始數據。所以'report.image'與'imageData'有一個完全不同的值,儘管我叫'report.image = imageData'。但我會再次檢查imageView。 – user1895268

+1

你可以讓你的圖像視圖顯示出來嗎? – PeejWeej

+0

哇,我知道了。按照您的建議檢查我的代碼。但它不是圖像視圖。目標視圖控制器中缺少一行。我猜出了很多部分之前,我猜,我以某種方式刪除了導入的行。所以有一個分配失蹤。非常感謝大家 – user1895268

相關問題