У меня есть родительский объект Notebook с отношением «ко-многим» к объекту Page.У меня есть прокрутка, отображающая все мои объекты Notebook с их обложками, и у меня есть модальный переход с контроллером представления, чтобы добавить новый объект Notebook через кнопку навигации.Когда я использую кнопку «Сохранить» в этом контроллере add-notebook-view, все идет хорошо, и я обнаруживаю себя с новой записной книжкой вместе с другими в моем просмотре прокрутки.
Теперь я попытался добавить первую страницу записной книжки, вызвавэтот метод в методе действия кнопки сохранения:
- (void) addFirstPage {
Page *newPage = (Page *)[NSEntityDescription insertNewObjectForEntityForName:@"Page" inManagedObjectContext:self.managedObjectContext];
NSNumber *number = [NSNumber numberWithInt:1];
newPage.pageNumber = number;
newPage.toNotebook = aNewNotebook;
NSBundle *bundle = [NSBundle mainBundle];
NSURL *indexFileURL = [bundle URLForResource:@"index" withExtension:@"html"];
newPage.page123andABC = [NSString stringWithContentsOfURL:indexFileURL usedEncoding:Nil error:Nil];
NSError *error;
if (![self.managedObjectContext save:&error])
NSLog(@"Failed to add the first page: %@", [error domain]);
}
, как вы можете видеть, я установил блокнот новой страницы в качестве моего нового блокнота (aNewNotebook).В этот момент, если я нажимаю кнопку «Сохранить» в модальном представлении, мне представляется мой вид с прокруткой, который:
A) добавляет обложку моего Блокнота, как обычно, как последний блокнот в списке (они упорядоченыатрибут даты создания).
B) В начале представления прокрутки у меня пустое место, как будто у меня там есть вторая записная книжка.Если я добавляю несколько записных книжек, в начале прокрутки появляется столько пустых пространств, сколько записных книжек.
Я пытался удалить записную книжку, назначенную странице, перед тем, как назначить свою собственную (aNewNotebook), если она была создана автоматически., но это дает мне ошибку, которую я пытаюсь удалить ноль.
Таким образом, создается впечатление, что я добавляю две записные книжки (одна без набора creationDate - в соответствии с тем, что появляется в начале scrollView, и что я действительно устанавливаю свою creationDate только для aNewNotebook; вторая - для NewNotebook;).Но, похоже, у меня есть только один, потому что, если я пытаюсь удалить ненужный, он говорит, что он не существует.
Пожалуйста, помогите - он будет очень признателен: -)
ОБНОВЛЕНИЕ:
Я попытался добавить два объекта страницы одновременно в свой метод addFirstPage, и я последовательно обнаружил два новых пустых пространства для ноутбука в моем scrollview.
Кроме того, я использовал NSLog для вывода счетчиказаписные книжки сразу после того, как я добавляю одну страницу, и я получаю 2 записные книжки - одну, которую я только что добавил, и одну, которая автоматически добавляется при добавлении нового объекта страницы.Таким образом, количество записных книжек соответствует тому, что я вижу в scrollView.
Есть мысли?
ВРЕМЕННОЕ РЕШЕНИЕ, КОТОРОЕ НАХОДИТСЯ КАК ХАК:
в моем методе addFirstPage - послеЯ создаю страницу и перед сохранением я добавил этот код, чтобы удалить единственную записную книжку без creationDate - то есть записную книжку, автоматически созданную путем добавления новой страницы:
NSMutableArray *notebooksToDelete = [CoreDataHelper searchObjectsForEntity:@"Notebook" withPredicate:[NSPredicate predicateWithFormat:@"creationDate == %@", nil] andSortKey:@"creationDate" andSortAscending:YES andContext:managedObjectContext];
Notebook *toDelete = [notebooksToDelete objectAtIndex:0];
[managedObjectContext deleteObject:toDelete];
Я действительно не удовлетворен этим решениемпоэтому, пожалуйста, не стесняйтесь предлагать какие-либо улучшения.