如何在Swift中的NSPredicate中使用日期对象到dd-MM-yyyy HH:mm:ss使用它

问题描述

我有字典的arrData,我想在NSPredicate中使用prevDate和currDate根据PERSON_ID,p_punchTime(字符串dd-MM-yyyy HH:mm:ss)进行过滤

  "aarData": [
        {
          "PERSON_ID": 100000000530788,"p_comments": "","p_person": " Amal Abutaleb","p_personId": "100000000530788","p_punchTime": "25-08-2020 10:32:53","p_punchType": IN,},{
          "PERSON_ID": 100000000530788,"p_punchTime": "25-08-2020 10:32:59","p_punchType": OUT,}
      ]

如何在Swift的NSPredicate中使用日期对象/字符串(用于dd-MM-yyyy HH:mm:ss)。

当我在NSPredicate中传递strCurrdate和strPrevdate起作用但过滤器返回所有aarData时,NSPredicate中的字符串Date是否在过滤器中不起作用?

我的代码:

let formatter = DateFormatter()
formatter.dateFormat = "dd-MM-yyyy HH:mm:ss"
let strCurrdate = formatter.string(from: (NHNetworkClock.shared()?.networkTime)! as Date )
let currdateObj = formatter.date(from: strCurrdate)! as NSDate    
print("currdateObj : \(currdateObj)")      //prints 2020-08-24 13:54:03 +0000,need dd-MM-yyyy HH:mm:ss
            
            
           
var dayComponent = DateComponents()
dayComponent.day = -1 // For removing one day (yesterday): -1
let theCalendar  = Calendar.current
let prevDate = theCalendar.date(byAdding: dayComponent,to:(NHNetworkClock.shared()?.networkTime)! as Date)
print("prevDate : \(prevDate)") 
let strPrevdate = formatter.string(from: prevDate!)  //gives string dd-MM-yyyy HH:mm:ss
let prevDateObj = formatter.date(from: strPrevdate)! as NSDate
print("prevDateObj : \(prevDateObj)")   //prints 2020-08-24 13:54:03 +0000,need dd-MM-yyyy HH:mm:ss
let resultPredicate = NSPredicate(format: "PERSON_ID CONTAINS %@ AND ( p_punchTime >= %@ AND p_punchTime <= %@)",NSString.init(format: "%@",Constants().EMPLOYEE_ID() as String),prevDateObj! as NSDate,currdateObj! as NSDate)
filteredArr = arrData.filtered(using: predicate) as NSArray 
//NOTE: aarData contains p_punchTime in format string dd-MM-yyyy HH:mm:ss

日志

(lldb) po resultPredicate
PERSON_ID CONTAINS "100000000530788" AND p_punchTime >= CAST(619860816.000000,"NSDate") AND p_punchTime <= CAST(619947216.000000,"NSDate")

我遇到此错误

libc++abi.dylib: terminating with uncaught exception of type NSException

任何线索

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)