问题描述
我有字典的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 (将#修改为@)