我正在使用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引擎
当它确实改变文本时,它给它一个可选的字符串。发生了什么事?