通过FileManager和PropertyListEncoder Swift编辑和保存数组

时间:2018-03-02 17:09:19

标签: ios arrays swift uitableview encoding

今天是退出与[{1}}一起保存data并开始使用UserDefaultsFileManager的日子。

我不会撒谎,我在过渡期间破坏了我的代码。

用户创建一个用于填充PropertyListEncoder的{​​{1}},当用户删除行或更改值时,该数组需要由用户更新。

我的代码能够成功创建数组,显示单元格并在正确的indexPath上进行计算以显示正确的数据。

问题从那里开始,这是错的:

1。当一个单元格被删除而另一个单元格被创建时,被删除的单元格将沿着新单元格返回(如果在删除单元格后重新启动应用程序,它将不再存在)

2。 array未更新(也未保存)到tableView。重新启动应用时再次amount

以下是代码:

数组创建:

cryptosArray

数组加载和TableView填充:

0

值更新和显示:

func createCryptoArray(_ addedCrypto: String) {

    if addedCrypto != "" {
        if addedCrypto == "Bitcoin BTC" {
            let crypto1 = Cryptos(name: "Bitcoin", code: "bitcoin", symbol: "BTC", placeholder: "BTC Amount", amount: "0.0")
            CryptoPickerViewController.cryptos.append(crypto1)
        }
        if addedCrypto == "Bitcoin Cash BCH" {
            let crypto2 = Cryptos(name: "Bitcoin Cash", code: "bitcoinCash", symbol: "BCH", placeholder: "BCH Amount", amount: "0.0")
            CryptoPickerViewController.cryptos.append(crypto2)
        }

        let documentsDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
        let archiveURL = documentsDirectory.appendingPathComponent("cryptosArray").appendingPathExtension("plist")
        let propertyListEncoder = PropertyListEncoder()
        let encodedArray = try? propertyListEncoder.encode(CryptoPickerViewController.cryptos)

        try? encodedArray?.write(to: archiveURL, options: .noFileProtection)
    }
}

我尽量让帖子尽可能短,所以如果我忘记了任何重要信息,请告诉我。

0 个答案:

没有答案