2017-10-06 16 views
1

J'essaie d'obtenir les objets du domaine, où newDate est plus tard firstDate. Donc, si la date de firstDate est 05.10.2017, il obtiendra des objets après cette date, par exemple 06.10.2017, mais pas 04.10.2017.Realm filter firstDate plus ancien que newDate

Voici comment je stocke la date:

class User: Object { 
    @objc dynamic var firstDate = Date() 
    @objc dynamic var newDate = Date() 
} 

Voici comment je sauve les objets:

let date = Date() 
let realm = try! Realm() 
let myUser = User() 

myUser.firstDate = self.date 

Voilà comment je suis en train de récupérer les objets:

var userData: Results<User>? 
if (homeIndexPathRow == 0) { 
    let getData = realm.objects(User.self).filter("firstDate > newDate") 
    userData = getData 
    print("userData", userData!) 
} 

Lorsque vous essayez de récupérer les objets, l'application se bloque. Est-ce que quelque chose ne va pas avec le format du filtre?

+0

Ne pas faire la force déballant sur une valeur qui peut être 'nil'. Etes-vous sûr que les données contiennent effectivement des entrées que le filtre doit renvoyer? –

+0

@ DávidPásztor Il devrait contenir des entrées. J'ai ouvert le fichier de domaine dans Realm Browser, et j'ai obtenu ceci: https://image.ibb.co/fSoxdw/Screen_Shot_2017_10_06_at_03_02_58.png Donc, comme vous pouvez le voir, ça devrait être très bien (?) Left is 'firstDate' et juste est 'newDate'. –

+0

Il n'y a pas d'entrées pour lesquelles 'firstDate> newDate', donc' getData' est 'nil' comme prévu ... –

Répondre

1

Essayez ceci:

var yourNSDate = NSDate() 
let predicate = NSPredicate(format: "firstDate < %@", yourNSDate) 
let dataResults = realm.objects(User.self).filter(predicate) 
userData = dataResults 

remplacer par le code ci-dessous if (homeIndexPathRow == 0) { ...

+1

Comme un charme, merci monsieur! –