我有一個應用程序,它保存來自UIDatePicker的文本和日期,然後顯示該註釋,如果您在UIDatePicker中返回該日期。DatePicker停止CoreData工作
它的作品很棒!只有我發現將UIDatePicker日期設置爲今天會停止CoreData的工作!
它只有當我運行這setDate行時,它會阻止核心數據工作。該應用程序運行良好,沒有崩潰,它只是不保存任何數據。如果我評論這條線,它的作品就是一種魅力。但是我需要在應用程序加載時在今天擁有UIDatePicker。
我用這個應用程序啓動時:
NSDate *now = [[NSDate alloc] init];
[datePicker setDate:now];
這去取注:
NSFetchRequest *fetch = [[NSFetchRequest alloc] init];
NSEntityDescription *testEntity = [NSEntityDescription entityForName:@"DatedText" inManagedObjectContext:self.managedObjectContext];
[fetch setEntity:testEntity];
NSPredicate *pred = [NSPredicate predicateWithFormat:@"dateSaved == %@", datePicker.date];
[fetch setPredicate:pred];
NSError *fetchError = nil;
NSArray *fetchedObjs = [self.managedObjectContext executeFetchRequest:fetch error:&fetchError];
if (fetchError != nil) {
NSLog(@"fetchError = %@, details = %@",fetchError,fetchError.userInfo);
}
noteTextView.text = [[fetchedObjs objectAtIndex:0] valueForKey:@"savedText"];
這節省注:
NSManagedObject *newDatedText;
newDatedText = [NSEntityDescription insertNewObjectForEntityForName:@"DatedText" inManagedObjectContext:self.managedObjectContext];
[newDatedText setValue:noteTextView.text forKey:@"savedText"];
[newDatedText setValue:datePicker.date forKey:@"dateSaved"];
NSError *saveError = nil;
[self.managedObjectContext save:&saveError];
if (saveError != nil) {
NSLog(@"[%@ saveContext] Error saving context: Error = %@, details = %@",[self class], saveError,saveError.userInfo);
}
您發佈的最後幾行代碼顯示如果無法保存,-save:方法將傳回錯誤。你看到一個錯誤?如果是這樣,*它是什麼*?如果沒有錯誤,你怎麼確定它沒有保存任何東西?你究竟如何驗證這個?此外,您在應用程序啓動時的第一個代碼塊似乎泄漏了一個NSDate實例。你分配/ init而不釋放它。嘗試[NSDate date]返回一個autoreleased實例,或者在完成後釋放它(在將它交給日期選擇器之後)。 – 2010-12-01 16:19:14