Я работаю над приложением для заметок, и у меня возникли проблемы с основными данными.У меня проблема в том, что одно из свойств объекта NSManagedObject (NSString) не обновляется после завершения работы приложения.Сценарий: (1) создать и запустить приложение, (2) написать что-то (UITextView), (3) нажать кнопку «домой» (фон), (5) завершить приложение, (6) открыть приложение, и текст есть, (7) отредактируйте текст (или удалите текст), (8) нажмите кнопку «Домой», (9) завершите работу приложения, (10) снова откройте приложение, и новый текст отсутствует.
Я думаю, что локализовал ошибку для этого фрагмента кода / метода:
// Helper method to change page, it takes one argument, tag of the next/prevoius page.
// This method is called in viewWillAppear.
- (void)goToPage:(int)tag
{
// Set up the new current page.
currentPage = [pageList objectAtIndex:tag];
NSLog(@"%@", currentPage.pageText); // Returns the old value, not the updated.
if ([currentPage.inputType isEqualToString:@"drawing"]) {
[pageView changeToDrawing];
toolSegment.selectedSegmentIndex = 0;
UIImage * pageImage = [UIImage imageWithData:currentPage.pageImage];
pageView.canvas.image = pageImage;
} else if ([currentPage.inputType isEqualToString:@"text"]) {
[pageView changeToText];
toolSegment.selectedSegmentIndex = 1;
pageView.pageText.text = currentPage.pageText;
if (editing) {
[undoButton removeFromSuperview];
[redoButton removeFromSuperview];
}
}
[self updateMenu];
}
Когда я запускаю NSLog(@"%@", currentPage.pageText);
, это показывает, что значение не было обновлено / сохранено.
Я устанавливаю значение следующим образом:
- (void)textViewDidEndEditing:(UITextView *)textView
{
currentPage.pageText = textView.text;
}
I Первоначально устанавливаю текущую страницу следующим образом:
// Sets the current page to the last open page
currentPageTag = pagesNoteblock.lastOpenPage;
currentPage = [pageList objectAtIndex:currentPageTag];
И создаю новые страницы следующим образом:
NSString * currentInputType;
if (currentPage.inputType == @"drawing") {
currentInputType = @"drawing";
} else if ([currentPage.inputType isEqualToString:@"text"]) {
currentInputType = @"text";
}
// Sets the current page.
Page * newPage = [NSEntityDescription insertNewObjectForEntityForName:@"Page" inManagedObjectContext:moc];
newPage.createdAt = [NSDate date];
newPage.inputType = currentInputType;
// Adds the new page to the database and to the pageList array.
[pagesNoteblock addNoteblockPagesObject:newPage];
[pageList addObject:newPage];
// Sets the current page and clears the textView.
currentPage = [pageList objectAtIndex:currentPageTag];
У меня также есть вспомогательный метод, который должен сохранять содержимое страницы, он вызывается в viewWillDisapears и некоторых других местах:
// Method that saves the current page's image to the database.
- (void)savePageContent
{
// Saves the image to the database.
if ([currentPage.inputType isEqualToString:@"text"]) {
currentPage.pageText = pageView.pageText.text;
} else if ([currentPage.inputType isEqualToString:@"drawing"]) {
NSData * coreDataImage = [NSData dataWithData:UIImagePNGRepresentation(pageView.canvas.image)];
currentPage.pageImage = coreDataImage;
}
pagesNoteblock.lastOpenPage = currentPageTag;
}
Любая помощь / советы приветствуются!
Обновление: небольшое пояснение, кажется, что объект "Page-text" доступен для записи только один раз, то есть я могу вносить в него только "сохраняемые" изменения при первом его создании.