UItableView 离线时不填充? swift 3

UItableView not populating while offline? swift 3

问题确实是,离线时 UItableview 没有填充。基本上在在线时,它将从 json 中的 php 编码网站读取并将其数据解析为 NSUserdefaults 并且它将使用默认设置显示数据。这在联机时非常有效。

我是这样测试的。首先,我 运行 在线(wifi 连接)时的代码首先填充默认值,然后退出 tableview,关闭 wifi,然后返回。没有任何显示。我在代码应该有 运行 的地方放了一个 breakpoint/print 文本,但它的断点从未被执行过,打印文本也从未被打印出来。

代码在离线时没有 运行ning 的原因是什么?我是否缺少应该添加的设置?

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!

        }
func tableView(_ tableView:UITableView, numberOfRowsInSection section: Int) -> Int{

            return messagesArray.count
        }

messagesArray.count 打印 0,因此代码不是 运行。解决了我自己的问题