这个问题困扰我很久了。我正在尝试使用 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/