在Swift

时间:2015-11-11 18:34:21

标签: ios swift uikit background-thread

我正在使用Swift中的应用程序向服务器发出请求,从而将JSON撤回并将其解析为计划。我有表视图控制器,每个单元格有7个单元格和一个标签。我的目标是在请求后更改每个标签的文本。

@IBOutlet weak var firstPeriod: UILabel!
@IBOutlet weak var secondPeriod: UILabel!
@IBOutlet weak var thirdPeriod: UILabel!
@IBOutlet weak var fourthPeriod: UILabel!
@IBOutlet weak var fifthPeriod: UILabel!
@IBOutlet weak var sixthPeriod: UILabel!
@IBOutlet weak var seventhPeriod: UILabel!

override func viewDidLoad() {
    super.viewDidLoad()

    let dayUrl = NSURL(string: "http://localhost:3000/day")

    func setSchedLayout() {
        var firstPeriodClass = String(defaults.dictionaryForKey("todaySchedule")!["first"]!["name"]!)
        self.firstPeriod.text = firstPeriodClass
        print(firstPeriodClass)
    }

    let task = NSURLSession.sharedSession().dataTaskWithURL(dayUrl!) {(data, response, error) in
        day = NSString(data: data!, encoding: NSUTF8StringEncoding)!.stringByReplacingOccurrencesOfString("\"", withString: "").stringByReplacingOccurrencesOfString(" ", withString: "").stringByReplacingOccurrencesOfString("D", withString: "d")
        var todaySchedule = defaults.dictionaryForKey("FullWeekSchedule")![day]

        defaults.setObject(todaySchedule, forKey: "todaySchedule")
        setSchedLayout()
    }
    task.resume()
}

这一切都发生在我的viewDidLoad()

我的UserDefaults中已有一些数据。

当我的setSchedLayout()函数在我的请求结束时调用时,它不会将文本值更改大约2分钟。然后它给了我一个错误,说我试图

  

从后台线程修改autolayout引擎

当它确实改变文本时,它给它一个可选的字符串。发生了什么事?

0 个答案:

没有答案