如何检索UserDefaults,因为单元格为空

时间:2018-03-04 04:30:55

标签: ios swift uitableview struct nsuserdefaults

我创建了一个结构字典来获取用户标题和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
    }

2 个答案:

答案 0 :(得分:0)

您在“storedArray”的默认值中存储String对象,但是当您从默认值中读取它时,它会将其类型化为AddMagazine。更改您存储或以字符串形式阅读的内容。

答案 1 :(得分:0)

我同意@Joakim Danielson。您正在将storedRssUrl存储为userdefaults中的字符串,并且在检索时您将类型转换为AddMagazine,因此它将为nil。

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