Saya memiliki model Data Inti dengan NSDate
properti. Saya ingin memfilter database berdasarkan hari. Saya berasumsi solusinya akan melibatkan NSPredicate
, tetapi saya tidak yakin bagaimana menggabungkan semuanya.
Saya tahu cara membandingkan hari kedua NSDate
menggunakan NSDateComponents
dan NSCalendar
, tetapi bagaimana cara memfilternya dengan NSPredicate
?
Mungkin saya perlu membuat kategori di NSManagedObject
subkelas saya yang dapat mengembalikan tanggal kosong hanya dengan tahun, bulan dan hari. Kemudian saya bisa membandingkannya di file NSPredicate
. Apakah ini rekomendasi Anda, atau ada sesuatu yang lebih sederhana?
objective-c
core-data
nsdate
nspredicate
nsfetchedresultscontroller
Jonathan Sterling
sumber
sumber
==
. Meskipun jika Anda mencari pada siang hari, ingatlah bahwa NSDate adalah tanggal dan waktu - Anda mungkin ingin menggunakan rentang tengah malam hingga tengah malam.startDate
ke 2012-09-17 0:00:00 danendDate
2012-09-18 0:00:00 dan predikat ke startDate <= date <endDate. Itu akan terjadi sepanjang waktu pada 2012-09-17.Contoh tentang cara juga mengatur startDate dan endDate ke jawaban yang diberikan di atas:
Di sini saya mencari semua entri dalam satu bulan. Perlu disebutkan, bahwa contoh ini juga menunjukkan cara mencari tanggal 'nil'.
sumber
Di Swift saya mendapatkan sesuatu yang mirip dengan:
Saya mengalami kesulitan untuk menemukan bahwa interpolasi string
"\(this notation)"
tidak berfungsi untuk membandingkan tanggal di NSPredicate.sumber
Ekstensi Swift 3.0 untuk Tanggal:
Kemudian gunakan seperti:
sumber
Saya memindahkan jawaban dari Glauco Neves ke Swift 2.0 dan membungkusnya di dalam fungsi yang menerima tanggal dan mengembalikan
NSPredicate
untuk hari yang sesuai:sumber
Menambah jawaban Rafael (sangat berguna, terima kasih!), Porting untuk Swift 3.
sumber
Saya baru-baru ini menghabiskan beberapa waktu untuk mencoba memecahkan masalah yang sama ini dan menambahkan yang berikut ini ke daftar alternatif untuk menyiapkan tanggal mulai dan akhir (termasuk metode yang diperbarui untuk iOS 8 dan lebih tinggi) ...
... dan
NSPredicate
untuk Data IntiNSFetchRequest
(seperti yang sudah ditunjukkan di atas pada jawaban lain) ...sumber
Bagi saya ini berhasil.
Saya telah memfilter array dari tanggal sekarang hingga 7 hari yang lalu. Maksud saya, saya mendapatkan data satu minggu dari tanggal sekarang. Ini seharusnya berhasil.
Catatan: Saya mengubah tanggal yang datang dengan mili detik dengan 1000, dan membandingkan setelahnya. Beri tahu saya jika Anda membutuhkan kejelasan.
sumber
completeArray
apakah itu memiliki Arraydictionary
ataudataModel
saya ingin menerapkannya di DataModel.