Tôi đang cố tìm nạp kết quả của đối tượng "MeterReading" của tôi, có hai thuộc tính, "dấu thời gian" và "đọc". "dấu thời gian" là một NSDate. Tôi đang cố gắng tìm một đối tượng với một ngày chính xác.Sử dụng NSPredicate để tìm chính xác NSDate từ NSManagedObjectContect
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"MeterReading" inManagedObjectContext:context];
[request setEntity:entity];
NSLog(@"%f", [self.timestamp timeIntervalSince1970]);
NSPredicate *pre = [NSPredicate predicateWithFormat:@"timestamp == %@", self.timestamp];
NSLog(@"%@", pre);
[request setPredicate:pre];
Bây giờ, self.timestamp được chuyển cho ViewController khác trước, các NSLog cho thấy:
1290264372,210091
Các NSPredicate đăng
timestamp == CAST (311957172.210091, "NSDate")
Câu hỏi đầu tiên: Tại sao hai số này không giống nhau?
Câu hỏi thứ hai và quan trọng hơn: Trong ManagedContext, tôi có bốn mục nhập có ngày tháng. Nếu tôi sử dụng "< =" thay vì "==", tôi sẽ nhận được kết quả có ngày nhỏ hơn ngày tôi đã chuyển, kể cả ngày tôi muốn có. Tại sao tôi không thể có được một ngày duy nhất với toán tử "=="? Điều này có thể liên quan đến độ chính xác của ngày của tôi không?
Cảm ơn!
gần như đã hoạt động, cảm ơn! đi qua mảng đã đưa ra một lỗi, nhưng tôi đã thông qua hai nsdates bằng tay cho vị từ và bây giờ nó hoạt động. :) – denbec
Rất tiếc, xin lỗi về điều đó! Rất vui vì nó đã giúp, mặc dù. –
Lưu ý rằng ví dụ này sẽ không hoạt động với dữ liệu cốt lõi. Bạn cần phải sử dụng một cái gì đó như thế này: http://zdam.posterous.com/core-data-fetch-by-date – SpaceTrucker