【问题标题】:Access properties of objects in an array- Swift 3.0访问数组中对象的属性——Swift 3.0
【发布时间】:2017-04-15 21:41:05
【问题描述】:

我在ViewController 文件中创建了一个struct,该文件具有urlimgname 属性。这是代码:

struct Article {

var url: URL
var img: URL
var title: String

    init(url: URL, img: URL, title: String) {
        self.url = url
        self.img = img
        self.title = title
    }
}

当用户按下按钮时,我会创建一个结构实例,将数据分配给属性,并将其放入一个名为 bookmarks 的数组中。然后在TableView 文件中,我想遍历bookmarks 并获取每个结构的urlimgname,这样我就可以将它们分配给每个单元格上的标签。

我遇到的问题是我不知道如何访问struct 中的每个struct 的属性bookmarks

如果有人能帮我完成这件事,那就太棒了。任何帮助将不胜感激!提前非常感谢。干杯,西奥

【问题讨论】:

  • celForRow(at;) 中,您使用indexPath.row 从数组中获取Article,然后像往常一样使用.url 访问属性。你能展示你的代码吗?

标签: ios swift xcode struct tableview


【解决方案1】:

您可以使用点. 后跟属性名称来访问结构的属性。

这是一个例子:

let article = Article(url: URL(string: ""), img: URL(string: ""), title: "hello")
let theTitle = article.title // equal to "hello"

在您的情况下,您想要获取表格视图的信息。假设您有一个名为 bookmarksArticle 数组,只需在表视图的 cellForRowAt indexPath 数据源方法中索引到该数组即可:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "yourIdentifierHere")
    let article = bookmarks[indexPath.row]
    let title = article.title
    cell.titleLabel.text = title
    return cell
}

这个数据源方法是代表你调用的,所以它会自动“循环”通过数据数组。

【讨论】:

  • 非常感谢,内森!我实现了你的答案,我有两个问题:首先,当我输入 let title = article.title 时出现错误('Any' 的值没有成员'title'),其次,当我尝试从情节提要附加标签时它说我不能为重复的内容附加标签。你会推荐以编程方式创建标签吗?
  • 您的bookmarks 数组是如何定义的?它应该看起来像这样var bookmarks: [Article] = [],以便编译器知道Article 类型的对象存储在那里。它在 swift 中很重要,因为它是一种强类型语言。关于标签,titleLabel是SDK提供的标准标签。如果您有自己的单元格的自定义设计,则需要创建UITableViewCell 的子类来分配它的出口。
  • @Losiowaty 我在那里打错字了!很棒的电话。万分感谢。你知道如何解决标签问题吗...?
  • 正如我所说,如果您有自定义设计,则必须创建 UITableViewCell 的子类 - 解释所有这些对于评论来说太长了,并且超出了这个问题的范围,但是那里有很多教程(例如:peterwitham.com/swift-archives/intermediate/…)。但是,如果您只想显示一行文本和一张图片,您可以使用 SDK 提供的 UITableViewCell 上的标准视图 - 您可以在文档中阅读更多内容 - apple.co/2pnNe0j
猜你喜欢
  • 2015-08-03
  • 1970-01-01
  • 2018-05-21
  • 2018-11-12
  • 2013-12-02
  • 2020-06-11
  • 2019-10-15
  • 2015-07-03
相关资源
最近更新 更多