ios - 使用 Swift : Can't access all objects of an array after For loop 的数组问题

标签 ios arrays swift

这个问题困扰我很久了。我正在尝试使用 NSMutableArray 填充 UITableView。但是我并没有把所有的对象都放在循环之外。对象的总数是 167。但是它返回了 167 个相同的对象。

I declared the array outside of the loop like this:

class TableViewController: UITableViewController {

var sermon = SermonLink()
var sermons: NSMutableArray = []

override func viewDidLoad() {
    super.viewDidLoad()

    loadContent()
   }

The whole thing happens in a method:

func loadContent() {

var elements: NSArray = []


    let urlForHTML = NSURL(string:"http://ontherock.dk/?page_id=1141")
    var dataForHTML: NSData = NSData(contentsOfURL: urlForHTML!)!
    var htmlParser = TFHpple(HTMLData: dataForHTML)
    var htmlXPathString = "//td[@class='lyf_td_filename']/a"
    elements = htmlParser.searchWithXPathQuery(htmlXPathString) as NSArray

        var sermonArr:NSMutableArray = []
        for item in elements {
            var element: TFHppleElement = item as! TFHppleElement

            var firstChildItem: NSString = element.firstChild.content
            var dashSeperatedSermonArray = firstChildItem.componentsSeparatedByString("-") as! [String]


            sermon.subject = dashSeperatedSermonArray[4].stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())
            sermon.speaker = dashSeperatedSermonArray[3].stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())
            sermon.urlForAudioSermon = element.attributes["href"] as! String



            sermonArr.addObject(sermon)//Here inside the loop I get the expected data
        }
        sermons = sermonArr //sermons contains only the object at the last index, 167 times
        self.tableView.reloadData()
 }

最佳答案

以下可能是问题所在。

自从您初始化 var sermon = SermonLink() 作为类的属性,您正在更新 for 循环内的相同对象。尝试在每次迭代的 for 循环内创建它。

关于ios - 使用 Swift : Can't access all objects of an array after For loop 的数组问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30107959/

相关文章:

ios - 在 viewWillAppear( ) 中获取空值但在 viewDidLoad( ) 中获取有效值

ios - GCM iOS 生产环境

ios - 协议(protocol)扩展中的 Swift 闭包

c# - 通过表单将变量从 Javascript 传递到 C#?

ios - 如何在 SwiftUI 中创建对象的实例而不重复?

ios - 使用自定义顺序按字母顺序排列数组

javascript - 按字母数字顺序对一组 li 标签进行排序

c# - 有没有办法像 ArrayList 一样对待 c# 静态数组?

arrays - 在 Swift 中通过 segue 传递后访问数组值的问题

SwiftUI ScrollView 只向一个方向滚动