1

So, I put NSDate in Realm model:

class GeneralList: Object {
    dynamic var createdAt = NSDate()
    dynamic var notes = ""
}

How to get, for example, all 'notes' in 27.03.2016 ?

Larme
  • 24,190
  • 6
  • 51
  • 81
VladyslavPG
  • 557
  • 1
  • 8
  • 19

2 Answers2

1

You can implement this function, from Rafael's answer

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
}

And then use it as a parameter for Realm's filter function like this:

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))

After executing this code your generalListsInDay should contain all GeneralList's in 27.03.2016

Community
  • 1
  • 1
bcamur
  • 894
  • 5
  • 10
0

So, I find easy way:

  1. Create public extension for String and create function with separate NSDate:

     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
    }
    }
    
  2. In Realm class, create separate date:

    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") 
    
  3. In ViewController call to predicate

     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) 
    

I hope it's help somebody...

VladyslavPG
  • 557
  • 1
  • 8
  • 19