2016-03-14 2 views
-1

Я получаю сообщение об ошибке между «let completePath» и «let nameOfPathHistory». Даже если я печатаю что-то промежуточное, я получил «Неустранимая ошибка» Функция, которую я вызываю с помощью completePath, возвращает значение, которое оно должно вернуть.App сделал сборку, но она не запускает фатальную ошибку: неожиданно найдено нуль при развертывании необязательного значения

Что для меня очень странно, так это то, что когда я создаю приложение, все выглядит нормально, но когда я его запускаю, появляется FATAL ERROR и точка останова.

У кого-то есть идея, почему я получаю эту ошибку?

class ViewController: UIViewController { 

@IBOutlet var datePickerCpntainer: UIView! 
@IBOutlet var selectedValueLabel: UILabel! 
@IBOutlet var selectValuesButton: UIButton! 

@IBOutlet var selectDate: UIButton! 

@IBOutlet var historyImageView: UIImageView! 
var selectedValuefromPicker:String! = "" 
var selectedChildInPicker: String! = "" 
var childValueString: String! = "" 

var selectedDateInPickerBeginn: String! = "" 
var timeStampBeginn:String! = "" 

var selectedDateInPickerEnde:String! = "" 
var timeStampEnde:String! = "" 

@IBOutlet var greatView: UIView! 
@IBOutlet var containerView: UIView! 

//var containerViewState : Bool 

override func viewDidLoad() { 
    super.viewDidLoad() 

    selectValuesButton.layer.borderColor = UIColor.whiteColor().CGColor 
    selectValuesButton.layer.borderWidth = 1 
    selectValuesButton.layer.cornerRadius = 10 

    selectDate.layer.cornerRadius = 10 
    let catchPath = CatchPath() 

     selectedValueLabel.text = selectedValuefromPicker 
     childValueString = selectedChildInPicker 

    print("------------->\(childValueString)") 
      timeStampBeginn = selectedDateInPickerBeginn 
      timeStampEnde = selectedDateInPickerEnde 

    print("------------------\(timeStampEnde)") 

      let completePath = catchPath.CatchThePathWithChid(childValueString,dateBeginn: timeStampBeginn, dateEnde: timeStampEnde) 

      print(completePath) 



      let nameOfPathHistory = catchPath.downloadPath(completePath, encoding: NSUTF8StringEncoding) 


      ImageLoader.sharedLoader.imageForUrl(nameOfPathHistory, encoding: NSUTF8StringEncoding) { (image, url) in 

       self.historyImageView.image = image! 
      } 

} 




@IBAction func selectItem(sender: AnyObject) { 

    containerView.hidden = false 

    func UIColorFromRGB(rgbValue: UInt) -> UIColor { 
     return UIColor(
      red: CGFloat((rgbValue & 0xFF0000) >> 16)/255.0, 
      green: CGFloat((rgbValue & 0x00FF00) >> 8)/255.0, 
      blue: CGFloat(rgbValue & 0x0000FF)/255.0, 
      alpha: CGFloat(0.5) 
     ) 
    } 



    greatView.backgroundColor = UIColorFromRGB(0x5e9400) 
    historyImageView.alpha = 0.5 
    selectValuesButton.alpha = 0.5 
    selectDate.alpha = 0.5 


} 


@IBAction func selectDate(sender: AnyObject) { 

    datePickerCpntainer.hidden = false 
} 


} 

обновление catchPath структура

import Foundation 
import UIKit 

public struct CatchPath { 



func downloadPath (contentsOfURL: NSURL, encoding: NSStringEncoding) -> String{ 
    var namePath:String = "http://wetter.htw-berlin.de/" 

    do { 
     let content = try String(contentsOfURL: contentsOfURL, encoding: encoding) 


     namePath += content 
     print(namePath) 
    } 

    catch { 
     print(error) 
    } 

    return namePath 

} 
func CatchThePathWithChid (chidValue:String?,dateBeginn:String?, dateEnde:String?)-> NSURL { 

    var completePathImage = NSURL(string: "") 


    let completePathWitValuePicker = NSURL(string: "http://wetter.htw-berlin.de/phpFunctions/holePlot.php?begin=\(dateBeginn) &end=\(dateEnde)&\(chidValue)") 

    if chidValue != nil && dateBeginn != "" { 

     var completePath = NSURL(string: "http://wetter.htw-berlin.de/phpFunctions/holePlot.php?begin=\(dateBeginn) &end=\(dateEnde)&\(chidValue)") 

     completePathImage = completePath 

    } else { 

     let wetterURLString = NSURL(string: "http://wetter.htw-berlin.de/phpFunctions/holePlot.php?begin=1365976800&end=1366063200&chid[]=6") 

     completePathImage = wetterURLString 


    } 



    print ("-------------------------->\(completePathImage)") 




    return completePathWitValuePicker! 
} 

} 
+0

Можете ли вы показать нам класс CatchPath? –

+0

Не используйте неявно развернутые опции, когда они вам не нужны, иначе они вернутся, чтобы укусить вас, как они это делали. Код безопасен! Используйте необязательную привязку с обработкой ошибок, используйте опциональность только тогда, когда это необходимо, и т. Д., И эти проблемы исчезнут, как магия. – Moritz

ответ

0

Я хотел бы начать, чтобы разбить код и обернуть ваши задания с «если» пусть дополнительными опциями. Проблема здесь является разыменованием необязательного, которое вы вынуждаете использовать с неявным, развернутым необязательным использованием «!».

+0

, но насколько я могу видеть, нет никаких опций, которые я заставляю использовать. – LaMora

0

Я решил проблему! проблема была в структуре catchPath. метод «CatchThePathWithChid» действительно возвращал необязательный параметр со значением nil. Я забыл вернуть реальную переменную, в данном случае «completePathImage». Благодарю всех вас за ваши комментарии.

+0

Этот тип сбоев, как правило, исходит из необязательного, который вы разыгрываете с восклицательным знаком. См. Мой комментарий ниже. – Laurent

Смежные вопросы

 Смежные вопросы