tutorial - Filtrar por día desde NSDate in Realm, Swift
realm swift tutorial (2)
Entonces, encuentro la manera fácil:
Cree una extensión pública para String y cree una función con NSDate por separado:
public static func sepaDate(whatNeed: String) -> String { var currentDate = NSDate() let calendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian) let dateComponents = calendar!.components([.Day, .Month, .Year, .Minute, .Hour], fromDate: currentDate) var forReturn: String = "0" switch whatNeed { case "day": let valu = String(dateComponents.day) forReturn = valu case "month": let valu = String(dateComponents.month) forReturn = valu case "year": let valu = String(dateComponents.year) forReturn = valu case "hour": let valu = String(dateComponents.hour) forReturn = valu case "minute": let valu = String(dateComponents.minute) forReturn = valu default: print("Error") } return forReturn } }
En la clase Realm, crea una fecha separada:
dynamic var minute = String.sepaDate("minute") dynamic var hour = String.sepaDate("hour") dynamic var day = String.sepaDate("day") dynamic var month = String.sepaDate("month") dynamic var year = String.sepaDate("year")
En ViewController llame al predicado
let dayday = String(dateComponents.day) let monthmonth = String(dateComponents.month) let yearyear = String(dateComponents.year) let predicate = NSPredicate(format: "day = %@ AND month = %@ AND year = %@", dayday, monthmonth, yearyear) generalRecords = uiRealm.objects(GeneralList).filter(predicate)
Espero que sea para ayudar a alguien ...
Entonces, pongo NSDate
en el modelo de Realm:
class GeneralList: Object {
dynamic var createdAt = NSDate()
dynamic var notes = ""
}
¿Cómo obtener, por ejemplo, todas las ''notas'' en 27.03.2016?
Puedes implementar esta función, a partir de la respuesta de Rafael
private func createMessageRealmModelFromIncomingMessage(incomingMessage: MessageRestModel) -> MessageRealmModel {
let messageRealmModel = MessageRealmModel()
messageRealmModel.id = incomingMessage.id!
messageRealmModel.messageType = "CHAT_MESSAGE"
messageRealmModel.value = (incomingMessage.content?.value)!
messageRealmModel.senderId = incomingMessage.senderId!
messageRealmModel.recipientId = incomingMessage.recipientId!
messageRealmModel.sendDate = incomingMessage.sendDate!
messageRealmModel.serverDeliveryDate = incomingMessage.serverDeliveryDate!
messageRealmModel.receiverDeliveryDate = NSDate().msFromEpoch()
return messageRealmModel
}
Y luego utilícelo como un parámetro para la función de filter
de Realm de esta manera:
var c = NSDateComponents()
c.year = 2016
c.month = 3
c.day = 27
var date = NSCalendar(identifier: NSCalendarIdentifierGregorian)?.dateFromComponents(c)
let generalListsInDay = realm.objects(GeneralList).filter(self.predicateForDayFromDate(day))
Después de ejecutar este código, su GeneralList
debe contener todas las GeneralList
en 27.03.2016.