我有两种基本方法 - viewDidLoad
和viewDidAppear
。根据我的App理念,当视图控制器加载时,它从base获取数据并开始使用一些谓词对其进行排序。提取过程很长,所以我将它发送到全局队列。当我的视图出现时,它显然没有从数组中获取值(在load方法中编译)并崩溃。所以我需要viewDidAppear
等待至少一个对象被附加到数组。
信号量或临时值?
提前谢谢!
P.S。数组中的每个项表示具有组成UI的数据的struct。用户与此UI进行交互,因此必须使用数组中的第一项加载一次。要切换到下一个项目,用户只需单击“下一步”,UI将根据数组中的下一项进行更改。这就是为什么我希望数据在后台获取并允许用户立即工作。 (不可能立即跳到第5,10或第1001个元素,在用户获取这些页码之前有足够的时间来获取数据)
P.P.S仍然没有正确的决定:(
答案 0 :(得分:0)
您应该使用嵌套的调度块,如下所示:
class SecondViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
@IBOutlet var tableView: UITableView!
//Define Days Of The Week
let calendar = NSCalendar.currentCalendar()
let today = NSDate()
let AddOneDay = NSCalendar.currentCalendar().dateByAddingUnit(
.Day,
value: 1,
toDate: NSDate(),
options: NSCalendarOptions(rawValue: 0))
let AddTwoDays = NSCalendar.currentCalendar().dateByAddingUnit(
.Day,
value: 2,
toDate: NSDate(),
options: NSCalendarOptions(rawValue: 0))
let AddThreeDays = NSCalendar.currentCalendar().dateByAddingUnit(
.Day,
value: 3,
toDate: NSDate(),
options: NSCalendarOptions(rawValue: 0))
let AddFourDays = NSCalendar.currentCalendar().dateByAddingUnit(
.Day,
value: 4,
toDate: NSDate(),
options: NSCalendarOptions(rawValue: 0))
let AddFiveDays = NSCalendar.currentCalendar().dateByAddingUnit(
.Day,
value: 5,
toDate: NSDate(),
options: NSCalendarOptions(rawValue: 0))
let AddSixDays = NSCalendar.currentCalendar().dateByAddingUnit(
.Day,
value: 6,
toDate: NSDate(),
options: NSCalendarOptions(rawValue: 0))
func convertDaysFormater(date: String) -> String {
let daysFormatter = NSDateFormatter()
daysFormatter.dateFormat = "EEEE"
daysFormatter.locale = NSLocale(localeIdentifier: "pl_PL")
let convertedOneDay = daysFormatter.stringFromDate(AddOneDay!)
let convertedTwoDays = daysFormatter.stringFromDate(AddTwoDays!)
let convertedThreeDays = daysFormatter.stringFromDate(AddThreeDays!)
let convertedFourDays = daysFormatter.stringFromDate(AddFourDays!)
let convertedFiveDays = daysFormatter.stringFromDate(AddFiveDays!)
let convertedSixDays = daysFormatter.stringFromDate(AddSixDays!)
return convertedOneDay
return convertedTwoDays
return convertedThreeDays
return convertedFourDays
return convertedFiveDays
return convertedSixDays
}
// Define Array
let textCellIdentifier = "TextCell"
let swiftBlogs = [convertedOneDay, convertedTwoDays, etc...]