我有這個問題很長一段時間。我試圖用NSMutableArray
填充UITableView
。但是我沒有把所有的對象都放在循環中。對象的總數是167.但相反,它返回同一對象的167個。使用Swift的數組問題:在For循環後無法訪問數組的所有對象
我宣佈這樣的循環外的數組:
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()
}
SermonLink是一個班級嗎? – ABakerSmith
Amit89是對的,你一遍又一遍地修改相同的'佈道'對象。你需要在循環內創建一個新的'sermon'對象*在'sermon.subject = ...'行之前'' – Moritz
是'SermonLink'是一個類。好的。我會嘗試在你建議的內部聲明對象 –