我遇到这个问题已经很长时间了。我正在尝试用UITableView
填充NSMutableArray
。但是我没有将所有对象都排除在循环之外。对象的总数为167。但是,它返回的是同一对象的167。
我像这样在循环外声明了数组:
class TableViewController: UITableViewController {
var sermon = SermonLink()
var sermons: NSMutableArray = []
override func viewDidLoad() {
super.viewDidLoad()
loadContent()
}
整个过程通过一种方法发生:
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使用数组的问题:For循环后无法访问数组的所有对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30107959/