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