【问题标题】:How to retrieve UserDefaults because cells are empty由于单元格为空,如何检索 UserDefaults
【发布时间】:2018-03-04 04:30:54
【问题描述】:

我制作了一个结构字典来获取用户标题和 URL,然后将它们存储在手机上,但是当我在 cellForRow 方法中检索数据时,单元格标签为空,应该出现的是标题。 (tableView 一开始是空的,直到用户开始使用 AddArticle 操作填充它)

所以我的问题是我是否做得对,因为单元格标签结果为零?

结构字典:

struct AddMagazine {
    let rssUrl: String
    let title: String

    init(dict: [String : String]){
        title = dict["title"] ?? ""
        rssUrl = dict["rssUrl"] ?? ""

    }
}
var userMagazineTitle = [AddMagazine]()

从 textField 中获取值:

@IBAction func AddArticle(_ sender: Any) {
            animateIn()
            tableView.isScrollEnabled = false
        }

        func addArticleTitle() {

            let UserMagazines = AddMagazine.init(dict: ["title": RssTitle.text!, "rssUrl": RssText.text!])
            let storedRssUrl = UserMagazines.rssUrl
            self.dataString = storedRssUrl

            //setting
            defaults.set(dataString, forKey: "storedArray")

            userMagazineTitle.append(UserMagazines)
            tableView.reloadData()

        }

尝试在此处检索标题:

 override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "myCell", for: indexPath) as! MyFeedTableViewCell

        let headlineName = defaults.object(forKey: "storedArray") as? AddMagazine
        cell.myHeadline.text = headlineName?.title

        cell.indentationLevel = 3
        return cell
    }

【问题讨论】:

  • 我没有看到您正在阅读 UserDefaults 文件的一行。另外,您的标题中不存在“retireve”一词。
  • 除了您的问题UserDefaults 是与表视图数据源相关的临时数据的错误位置。

标签: ios swift uitableview struct nsuserdefaults


【解决方案1】:

您在“storedArray”的默认值中存储了一个字符串对象,但是当您从默认值中读取它时,您将其类型转换为 AddMagazine。更改您存储的内容或将其作为字符串读取。

【讨论】:

    【解决方案2】:

    我同意@Joakim Danielson 的观点。您正在将 storedRssUrl 这是一个字符串存储到 userdefaults 中,并且在检索时您将类型转换为 AddMagazine 因此它将为零。

    self.dataString = storedRssUrl
    //setting
    defaults.set(dataString, forKey: "storedArray") --> Here you are storing string
    
    let headlineName = defaults.object(forKey: "storedArray") as? AddMagazine --> Here you are fetching as AddMagazine.
    
    //It should be like this
    let headlineName = defaults.object(forKey: "storedArray") as? String
    

    【讨论】:

    • 应该是偶数defaults.string(forKey?
    • @vadian,是的,比选角更好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-29
    • 1970-01-01
    相关资源
    最近更新 更多