Я работаю над записью-приложением, и у меня возникают некоторые проблемы с основными данными. Проблема, с которой я сталкиваюсь, заключается в том, что из моих свойств объекта NSManagedObject (NSString) не обновляется после того, как приложение было прервано. Сценарий: (1) Сборка & Запустите приложение, (2) напишите что-нибудь (UITextView), (3) нажмите главную кнопку (фон), (5) Завершите приложение, (6) Откройте приложение, и текст там, (7) отредактируйте текст (или удалите текст), (8) Нажмите главную кнопку, (9) Завершите приложение, (10) снова откройте приложение, а новый текст там не будет.Не удается обновить свойство iOS NSManagedObject
Я думаю, что я локализованы ошибку в этот фрагмент кода/метод:
// 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;
}
Любая помощь/советы будут оценены!
Обновление: Небольшое пояснение, кажется, что объект «Страница-текст» доступен только один раз, т. Е. Я могу сделать только «разумные» изменения, когда я его впервые создам.
1. Да и нет. Он сохраняется, когда я нажимаю кнопку «Готово», думая переместить его в «textViewDidChange», но он все равно должен работать. 2. Это действительно хороший момент, но я попытался с помощью NSlog в моем методе создания страницы, где введенный вами код существует, и он только вызывается, когда я этого хочу. – Anders
Потерял волосы над этим. Это была глупая ошибка, как обычно. В моем пользовательском NSManagedObject я реализовал свойство text как '@ syntezise', когда оно должно быть' @ dynamic'. Спасибо в любом случае @Canopus и @gamBit – Anders