2016-06-05 7 views
0

Ich habe den folgenden Code in meinem ViewController. Ich möchte es umgestalten, um NSSet.objectsPassingTest() zu verwenden, also ist es prägnanter und einfacher zu folgen. Ich bin mit Swift, so dass keine Objective C.Wie würde ich den folgenden Code umstellen, um NSSet.objectsPassingTest() zu verwenden

let items = feed.items?.allObjects as! [Item] 
var unreadCount = 0 
for item in items { 
    if !item.read { 
     unreadCount = unreadCount + 1 
    } 
} 

Ich habe die Suche ein paar Stunden damit verbracht, aber ich habe nicht in der Lage gewesen, ein Beispiel zu finden, die ich verstehen kann.

Falls es nicht klar ist, möchte ich let items = feed.items?.allObjects as! [Item] durch let items = feed.items?.objectsPassingTest() ersetzen.

Antwort

3

Einen anderen Ansatz

let unreadCount = items.filter { !$0.read }.count 
2

Es sieht so aus, als wäre Ihr items ein Array und nicht ein Set. Versuchen Sie folgendes:

let unreadCount = items.reduce(0) { $0 + ($1.read ? 0 : 1) } 
Verwandte Themen