如何查看 NSArray 中的 NSDate yyyy/mm/dd 并进行比较?

How to check NSDate yyyy/mm/dd in NSArray and compare it?

我有一个 NSArray,里面有一个 NSDate 类型的变量 给出这种格式 "timeStamp = "2015-08-18 16:58:31"

我只想比较所有数组中的日期 2015-08-18

比较它,如果相同日期只有第一个显示完整的 NSDate

其余具有相同日期的仅显示 UI

的时间

这是我目前所做的:

func getAllMessages() -> NSArray{
    var allMessages = self.mutableSetValueForKey("messages").allObjects as NSArray
    let timeStampSortDescriptor = NSSortDescriptor(key: "timeStamp", ascending: true)

    var sortByTime = allMessages.sortedArrayUsingDescriptors([timeStampSortDescriptor])
    println("\(sortByTime)")
    return sortByTime
}

屏幕截图 http://i.stack.imgur.com/wcsSz.jpg

经过一番研究,我确实提出了如下解决方案

首先这个扩展非常好,我的方式取决于它

如果有人有更好的解决方案或清洁 如果你能 post 在这里

我将不胜感激

很抱歉没有评论

func loadMessages(){

    if chatRoom!.messages.count > 0{
        var i = 0
        var tempMsgDate:NSDate?
        var chatMessage:ChatMessage?

        for message in chatRoom!.getAllMessages(){
            let msg = message as! Message
            if i == 0{
                tempMsgDate = msg.timeStamp
                chatMessage = ChatMessage(incoming: msg.income, text: msg.message, sentDate: convertNSDateToString(msg.timeStamp))
                i++
            }else{
                //if the tempMsgDate (which is the first of the same
                //date in the nsarray) 
                if checkIfSameDayDate(tempMsgDate!,date2: msg.timeStamp){
                    var tempDate = msg.timeStamp.time
                    let dateFormatter = NSDateFormatter()
                    dateFormatter.dateFormat = "HH:mm"
                    let date = dateFormatter.dateFromString(tempDate)
                    println("loadmessages method:  \(date?.time)")
                    chatMessage = ChatMessage(incoming: msg.income, text: msg.message, sentDate: msg.timeStamp.time)
                }else{//after he got to different date it save it as
                      //first of same date to follow 
                    tempMsgDate = msg.timeStamp
                    chatMessage = ChatMessage(incoming: msg.income, text: msg.message, sentDate: convertNSDateToString(msg.timeStamp))
                }
            }

            var msgCollection:[ChatMessage] = [ChatMessage]()
            msgCollection.append(chatMessage!)
            chat.loadedMessages.append(msgCollection)
        }
    }
}


func convertNSDateToString(date:NSDate) -> String{
    let dateString = date.date + " " + date.time
    println("in convert: \(dateString)")
    return dateString
}

func checkIfSameDateFromSendMSGAndReciveMSG(date:NSDate) -> Bool{
    for message in chatRoom!.getAllMessages(){
        let msg = message as! Message
        if msg.timeStamp.date == date.date{
            return true
        }
    }
    return false
}
//checks if the date1 equal to date2    
func checkIfSameDayDate(date1:NSDate,date2:NSDate) -> Bool{
    if date1.date == date2.date{
        return true
    }
    return false
}