Ios 脱机时未填充UItableView?斯威夫特3
问题是,脱机时,UItableview没有填充。基本上,当它在线时,它将从一个php编码的json网站读取数据,并将其解析为NSUserdefaults,然后使用默认设置显示数据。这在联机时非常有效 我是这样测试的。首先,我在线运行代码(wifi连接),首先填充默认值,然后退出tableview,关闭wifi,然后返回。什么也看不出来。我在代码应该运行的地方放了一个断点/打印文本,但它从未执行过断点,打印文本从未打印过 脱机时代码没有运行有什么原因吗?我是否缺少应该添加的设置Ios 脱机时未填充UItableView?斯威夫特3,ios,uitableview,swift3,nsuserdefaults,Ios,Uitableview,Swift3,Nsuserdefaults,问题是,脱机时,UItableview没有填充。基本上,当它在线时,它将从一个php编码的json网站读取数据,并将其解析为NSUserdefaults,然后使用默认设置显示数据。这在联机时非常有效 我是这样测试的。首先,我在线运行代码(wifi连接),首先填充默认值,然后退出tableview,关闭wifi,然后返回。什么也看不出来。我在代码应该运行的地方放了一个断点/打印文本,但它从未执行过断点,打印文本从未打印过 脱机时代码没有运行有什么原因吗?我是否缺少应该添加的设置 var messa
var messagesArray:[String] = [String]()
var dateArray:[String] = [String]()
class Singleton {
static let sharedInstance: UserDefaults = {
let instance = UserDefaults.standard
// setup code
return instance
}()
}
//let defaults = UserDefaults.standard
let defaults = Singleton.sharedInstance
override func viewDidLoad() {
super.viewDidLoad()
//removeDefaults()
if (isInternetAvailable() == true)
{
self.retrieveMessages("")
//storeLocal()
}
else {
// TODO data is available but not displayed ??
for (key, value) in defaults.dictionaryRepresentation() {
print("\(key) = \(value) \n")
}
}
//display current notification
//nRead()
self.notificationTable.dataSource = self
self.notificationTable.delegate = self
// Do any additional setup after loading the view.
}
func tableView(_ tableView:UITableView, numberOfRowsInSection section: Int) -> Int{
return messagesArray.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
// this code does not run when offline
//test
let nCell = tableView.dequeueReusableCell(withIdentifier: "nCell") as UITableViewCell!
//let myLabelTitle = nCell?.viewWithTag(1) as! UILabel
let myLabelDate = nCell?.viewWithTag(2) as! UILabel
let myLabelDescription = nCell?.viewWithTag(3) as! UILabel
//messagesArray ["nContent":["Test1", "Test2"]]
myLabelDescription.text = defaults.string(forKey: "nDescription\(indexPath.row + 1)")
myLabelDate.text = defaults.string(forKey: "nDate\(indexPath.row + 1)")
//print(defaults.string(forKey:"nDate1"))
print("this code runs even while offline")
let readValue = defaults.string(forKey: "nRead\(indexPath.row + 1)")
if (readValue == "1" )
{
myLabelDate.textColor = UIColor.black
}
else
{
myLabelDate.textColor = UIColor.red
}
return nCell!
}
messagesArray.count打印0,因此代码未运行。修复了我自己的问题您需要向我们展示与从网络响应中填充
NSUserDefaults
相关的代码,并在脱机时从中获取数据。首先,您是如何检测脱机的?当您脱机测试时,您是否检查了您的代码将进入哪个if-else语句块?我是说,你是如何检查互联网连接的?
func tableView(_ tableView:UITableView, numberOfRowsInSection section: Int) -> Int{
return messagesArray.count
}