Фоновое:Основные данные: fetchedResultsController отношение «волшебно» установлено в ноль
- Я работаю в приложении управления запасами.
- Пользователи могут добавить товар на грузовик
- При добавлении объекта, уже находящегося на грузовике, я просто хочу обновить его количество, а не добавлять его снова.
- Это отношения взаимно-однозначные. На данный момент есть только один «грузовик»
Процесс Логика: После того, как номер пункта введен, искать его под Items. Если найдено, создайте соответствующий управляемый объект truckItem и сохраните его в словаре. Как только я собираюсь сохранить проверку контекста против всех truckInventory сохраненных объектов. Если элемент уже существует, то получите управляемый объект truckItem и добавьте количества, уничтожьте вновь созданный truckItem. Сохранить.
Задача: При проверке на хранящиеся на нем грузовые объекты он будет загружать всю информацию, но элемент будет установлен на ноль. (Примечание, ноль, а не). Следовательно, количество отражает правильное значение, но у нас больше нет соответствующего элемента.
Упрощенный код: Загрузка Inventory:
NSError *error;
NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:@"TruckItems"];
NSSortDescriptor *sort = [[NSSortDescriptor alloc]
initWithKey:@"item" ascending:YES];
[request setSortDescriptors:[NSArray arrayWithObject:sort]];
loadedInventoryResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:self->context sectionNameKeyPath:nil cacheName:nil];
if(![loadedInventoryResultsController performFetch:&error]) {
NSLog(@"Error! %@", [error localizedDescription]);
}
Проверка против Сохраненный Inventory Упрощенный Код:
for(NSString *mpn in items) {
TruckItems *item = [items objectForKey:mpn];
//This shows the right number of managedObjects, but the ones that are repeated show item = nil;
NSLog(@"Logged: %@", [loadedInventoryResultsController fetchedObjects]);
//Check to see if items are already in inventory. If they are update their quantities rather than adding them again.
for(TruckItems *loadedItem in [loadedInventoryResultsController fetchedObjects]) {
Items *storedItem = [loadedItem item]; //I am doing this just for testing: This comes back as nil. This is the problem as it comes nil
Items *scanned = [item item]; //Same here.
if([stored.manufacturerProductNumber isEqualToString:scanned.manufacturerProductNumber]) {
item.quantity = [loadedItem.quantity decimalNumberByAdding:item.quantity];
[context deleteObject:loadedItem];
}
}
}
//Save context
вопросы: Почему быть установленным на ноль? Как этого избежать?
Заранее спасибо.
Если вы собираетесь создавать теги wikis с текстом с копированием и вставкой с другого сайта, пожалуйста, ** укажите источник, из которого вы копируете; в противном случае вы [плагиат текста] (http://meta.stackexchange.com/questions/137799/what-to-do-about-large-amounts-of-plagiarizing-in-tag-wikis). – LittleBobbyTables