2015-05-07 29 views
0

我有這個問題很長一段時間。我試圖用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() 
} 
+0

SermonLink是一個班級嗎? – ABakerSmith

+1

Amit89是對的,你一遍又一遍地修改相同的'佈道'對象。你需要在循環內創建一個新的'sermon'對象*在'sermon.subject = ...'行之前'' – Moritz

+0

是'SermonLink'是一個類。好的。我會嘗試在你建議的內部聲明對象 –

回答

1

下面可能是問題。

由於您將var sermon = SermonLink() 初始化爲該類的屬性,並且您正在更新for循環中的相同對象。嘗試在每個迭代的for循環中創建它。

+0

謝謝你的幫助。它完全解決了它。 –

+0

歡迎您:) – Amit89