核心datedate从dateselect器文本字段比较
我正在模型中使用datetypes成功保存date在核心数据。 date保存格式如2017-04-02 14:56:41。 当我retreive我想过滤date与当前date文本字段有一个像2017年4月2日的格式。我使用谓词比较两个date,但应用程序由于差异坠毁或可能是当前date是在string中。
let predicate = NSPredicate(format: "(dateSchedule >= %@ )", fromTextField.text!)
核心数据date:2017-04-02 14:56:41 currentdate textfielddate:2017年4月2日
任何帮助?
我假设dateSchedule是coredata中的date 。
你可以转换你的文本datevariables(确保格式是正确的)
let dateString = "2017-04-02 14:56:41" let dateFormatter = DateFormatter() dateFormatter.dateFormat = "yyyy-MM-dd hh:mm:ss" let dateObj = dateFormatter.date(from: dateString)
然后你创build谓词:
let predicate = NSPredicate(format: "(dateSchedule >= %@ )", dateObj)
编辑:
如果date的时间很烦人,你可以使用这样的工具:
https://github.com/erica/SwiftDates
所以你可以过滤:
let predicate = NSPredicate(format: "(dateSchedule >= %@ )", dateObj.startOfDay)
这样你就可以删除时间部分,并在一天的开始时进行过滤
我会这样格式化date:
let dateFormatter = Dateformatter() dateFormatter.timeStyle = .none dateFormatter.dateStyle = .medium
你可以把它应用到一个date,并像这样获得一个string:
whatever you are saving it as = dateFormatter.string(from: Date())
那么你会得到这样的date,“2017年3月17日”。
这种使用date格式化程序的方式在您的情况下非常实用。
当你提取你时,也是这样做的:
let predicate = NSPredicate(format: "(dateSchedule >= %@ )", fromTextField.text!)
但我会build议你使用一个UIDatePickerView:
let predicate = NSPredicate(format: "(dateSchedule >= %@ ), dateFormatter.string(from: datePickerView.date)")
- 将iOS Core Data添加到现有项目 – 解包可选值时发生错误
- 为什么我应该为每个新线程或NSOperation创build一个NSManagedObjectContext,而不是在主线程上调用Core Data?
- 在iOS上encryptionSQLite数据库文件
- Xcode 8无法打开Model.xcdatamodeld
- 将CoreData拆分为更快的查询时间
- 核心数据错误:_Unwind_Resume从图像CoreData中的函数_PFFaultHandlerLookupRow调用
- WatchKit核心数据同步了
- iPhone中的核心数据默认使用哪个持久性存储
- 在NSPredicate中结合“AND”和“OR”条件