Ios 脱机时未填充UItableView?斯威夫特3

Ios 脱机时未填充UItableView?斯威夫特3,ios,uitableview,swift3,nsuserdefaults,Ios,Uitableview,Swift3,Nsuserdefaults,问题是,脱机时,UItableview没有填充。基本上,当它在线时,它将从一个php编码的json网站读取数据,并将其解析为NSUserdefaults,然后使用默认设置显示数据。这在联机时非常有效 我是这样测试的。首先,我在线运行代码(wifi连接),首先填充默认值,然后退出tableview,关闭wifi,然后返回。什么也看不出来。我在代码应该运行的地方放了一个断点/打印文本,但它从未执行过断点,打印文本从未打印过 脱机时代码没有运行有什么原因吗?我是否缺少应该添加的设置 var messa

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

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

脱机时代码没有运行有什么原因吗?我是否缺少应该添加的设置

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
        }