2015-05-17 11 views
5

W moim RealmSwift (0.92.3) pod Xcode6.3, jak bymRealm data-query

// the Realm Object Definition 
import RealmSwift 

class NameEntry: Object { 
    dynamic var player = "" 
    dynamic var gameCompleted = false 
    dynamic var nrOfFinishedGames = 0 
    dynamic var date = NSDate()  
} 

Obecny tableView znajdzie liczbę obiektów (czyli obecnie wszystkie obiekty), jak następuje:

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

    if let cnt = RLM_array?.objects(NameEntry).count { 
     return Int(cnt) 
    } 
    else { 
     return 0 
    } 
} 

Pierwsze pytanie: Jak znaleźć liczbę obiektów z datą po, powiedzmy, dniu 15.06.2014? (np. zapytanie o datę powyżej określonej daty z obiektu RealmSwift - jak to działa?). Lub innymi słowy, w jaki sposób powyższa metoda znajdzie liczbę obiektów o wymaganym zakresie dat?

Skuteczne wypełnienie wszystkich Realm-obiektów w Tableview wygląda następująco:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

    var cell = tableView.dequeueReusableCellWithIdentifier("NameCell") as! PlayersCustomTableViewCell 

    if let arry = RLM_array { 
     let entry = arry.objects(NameEntry)[indexPath.row] as NameEntry 
     cell.playerLabel.text = entry.player 
     cell.accessoryType = entry.gameCompleted ? .None : .None 
     return cell 
    } 
    else { 
     cell.textLabel!.text = "" 
     cell.accessoryType = .None 
     return cell 
    } 
}   

Drugie pytanie: Jak wypełnić do Tableview tylko RealmSwift-obiektów, które mają określoną datę (czyli na przykład wypełnianie tylko obiektów, które mają ponownie datę powyżej 15.06.2014). Lub innymi słowy, w jaki sposób powyższa metoda wypełniaby tylko tabelę Wyświetl obiekty o wymaganym zakresie dat?

Odpowiedz

13

Możesz wyszukiwać dziedziny z datami.

Jeśli chcesz uzyskać obiekty po dacie, użyj wyższego niż (>), w przypadku dat wcześniej użyj mniej niż (<).

Korzystanie z predykatu z konkretnym obiektem NSDate będą robić to, co chcesz:

let realm = Realm()  
let predicate = NSPredicate(format: "date > %@", specificNSDate) 
let results = realm.objects(NameEntry).filter(predicate) 

Pytanie 1: W przypadku liczby obiektów, zadzwoń liczyć: results.count

Pytanie 2: results jest tablicą NameEntrys po specificNSDate, pobierz obiekt w indexPath. Przykład, let nameEntry = results[indexPath.row]

Za stworzenie konkretnego obiektu NSDate, spróbuj tej odpowiedzi: How do I create an NSDate for a specific date?