2016-09-23 45 views
0

目前我填充我的UITableView元素Array.count:斯威夫特/填充的UITableView與匹配某些條件

var eventDates: [NSMutableDictionary] = [] 

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 

     return eventDates.count 
} 

eventDateeventDatesvalueForKey("monthsYear")

硬編碼我現在想要eventDates.count只返回與valueForKey("monthsYear") == "September 2016" eventDates。

換句話說,解釋一個更多的時間:

eventDates.count = 10,但其中只有5匹配條件valueForKey("monthsYear") == "September 2016"

如何獲取僅5個元素來填充UITableView(只有5行)。

從理論上講是這樣的:

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 

    let returnValue = 0 
    for date in eventDates where date.valueForKey("monthsYear") == "September 2016" { 
      returnValue++ 
    } 
    return returnValue 
} 

幫助是非常讚賞。

回答

1

所以,你需要做的是一個簡單的過濾器

let sepDates = eventDates.filter() { $0.valueForKey("monthYear") == "September 2016" } 
return sepDates.count 

一些不回答有關的東西的東西

一個建議,儘量使用模型來避免使用valueForKey,所以你陣列會看像

var eventDates: [EventDate] = [] 

運氣好,玩得開心;)

+0

感謝模特們的tipp。但如何設置它們?目前它告訴我。使用未聲明的類型'EventDate'。正如預期的那樣 –

+0

我得到:''NSMutableDictionary'類型的值沒有成員'monthYear',所以我猜你的答案假定我使用模型? –

+0

öhm,您必須創建一個具有您需要的值作爲屬性的類或結構,這意味着您當前的字典是您的關鍵值對的原始數據,並且您需要根據需要創建正確的類/結構 –