如何使这两个功能一起工作?

时间:2015-08-01 14:13:38

标签: ios string swift function

我想根据天气信息随机化天气的图像背景。我想让他们一个接一个地工作; 第一个函数将生成一个字符串,第二个函数使用第一个函数生成的字符串。

import UIKit

class ViewController: UIViewController, UITextFieldDelegate {

    @IBOutlet weak var cityNameTextField: UITextField!
    @IBOutlet weak var weatherFact: UILabel!
    @IBOutlet weak var weatherImage: UIImageView!

    var weather = ""

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        self.cityNameTextField.delegate = self
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    @IBAction func weatherButton(sender: UIButton) {
        weatherInformation()
        randomWeatherImage()
    }

    func showError() {
        self.weatherFact.text = "we can't load the weather of \(cityNameTextField.text). please try again"
    }

    override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
        self.view.endEditing(true)
    }

    func textFieldShouldReturn(textField: UITextField) -> Bool {
        self.view.endEditing(true)
        return true
    }

    func randomWeatherImage() {

        if weatherFact.text != nil {

            let string = weather

            let regex = NSRegularExpression(pattern: "-?[0-9]{1,3}", options: NSRegularExpressionOptions(), error: nil)

            if let matches = regex?.matchesInString(string, options: NSMatchingOptions(), range: NSRange(location: 0, length: count(string))){

                let degrees = matches.map { return(string as NSString).substringWithRange($0.range) }

                var maxDegree = degrees[0].toInt()
                var minDegree = degrees[1].toInt()
                var averageWeather:Int = (maxDegree! + minDegree!) / 2

                if averageWeather < 0 {
                    self.weatherImage.image = UIImage(named: "Cold.jpg")
                }
                else if averageWeather > 20 {
                    self.weatherImage.image = UIImage(named: "Warm.jpg")
                }
                else {
                    self.weatherImage.image = UIImage(named: "Mild.jpg")
                }
            }
        }
    }

    func weatherInformation() {
        let url = NSURL(string: "http://www.weather-forecast.com/locations/" + cityNameTextField.text.stringByReplacingOccurrencesOfString(" ", withString: "-") + "/forecasts/latest")

        if url != nil {

            let task = NSURLSession.sharedSession().dataTaskWithURL(url!){ (data, response, error) in

                var urlError = false

                if error == nil {

                    var urlContent = NSString(data: data, encoding: NSUTF8StringEncoding)
                    var urlContentArray = urlContent!.componentsSeparatedByString("<span class=\"phrase\">")

                    if urlContentArray.count > 0 {

                        var weatherArray = urlContentArray[1].componentsSeparatedByString("</span>")
                        self.weather = weatherArray[0] as! String
                        self.weather = self.weather.stringByReplacingOccurrencesOfString("&deg;", withString: "º")
                    }
                    else {
                        urlError = true
                    }
                }
                else {
                    urlError = true
                }

                dispatch_async(dispatch_get_main_queue()) {
                    if urlError == true {
                        self.showError()
                    }
                    else {
                        self.weatherFact.text = self.weather
                    }
                }
            }
            task.resume()
        }
        else {
            showError()
        }
    }
}

1 个答案:

答案 0 :(得分:1)

设置randomWeatherImage后,只需致电weatherFact.text

            dispatch_async(dispatch_get_main_queue()) {
                if urlError == true {
                    self.showError()
                }
                else {
                    self.weatherFact.text = self.weather
                    self.randomWeatherImage()
                }
            }