Я использую основные данные для хранения своих основных данных и их обновления на основе представления взаимодействия с пользователем UI
, связанного с тем же.
Сначала я выбираю некоторые данные в SignupStepperVC
, используя следующий методи передать его в SignupGroupVC
, который встроен в UIContainerView
внутри SignupStepperVC
.
Так что мой код в SignupStepperVC
будет:
self.arrSubCategory = TblSubCategory.fetchSubCategories()
, где fetchSubCategories()
- это классметод TblSubCategory
, который будет извлекать все sub-categories
из сущности и возвращаться к VC
, где его вызовут.
@nonobjc public class func nsFetchRequest() -> NSFetchRequest<TblSubCategory> {
return NSFetchRequest<TblSubCategory>(entityName: "TblSubCategory")
}
class func fetchSubCategories() -> [TblSubCategory]? {
let fetchRequest = TblSubCategory.nsFetchRequest()
fetchRequest.sortDescriptors = [NSSortDescriptor(key: "sName", ascending: true)]
do {
let arrSubCategories = try AppDelegate.shared.persistentContainer.viewContext.fetch(fetchRequest)
return arrSubCategories
} catch {
Logger.error("TblSubCategory - \(error.localizedDescription)")
return nil
}
}
TblSubCategory
имеет следующие свойства:
@NSManaged public var bIsSelected : Bool
@NSManaged public var nId : Int16
@NSManaged public var nMainCategoryId : Int16
@NSManaged public var nIsActive : Int16
@NSManaged public var nGroupId : Int16
@NSManaged public var sName : String?
@NSManaged public var sImage : String?
Сейчасиспользуя ссылку 'RegistrationGroupVC', я передаю ей массив подкатегории.
self.refSignupGroupVC?.arrSubCategory = self.arrSubCategory
В SignupGroupVC
у меня есть список групп, поэтому при выборе любой группы, связанной с этимГруппа «Вся категория» будет отображаться в SignupFirstStepVC
.
self.signupFirstStepVC?.arrSubCategory = arrSubCategory?.compactMap { $0.copy() } as? [TblSubCategory]
В SignupFirstStepVC
у меня есть список всех TblSubCategory
, которые отображаются в виде коллекции.Поэтому при выборе любого элемента из него он будет выбран, и для bIsSelected
будет установлено значение true
, и при повторном выборе будет установлено значение «ложь».
Код в RegistrationFirstStepVC
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
self.arrSubCategory![indexPath.item].bIsSelected = !self.arrSubCategory![indexPath.item].bIsSelected
collectionView.reloadData()
}
Используя делегат, я передам массив выбранной подкатегории в SignupGroupVC
.
Это поток кода, где я сталкиваюсь с некоторой проблемой.
Итак, когдаЯ возвращаюсь на главный экран и снова захожу на SignupStepperVC
, снова есть вызов метода для получения подкатегории.
Итак, проблема в том, что в базе данных только 20 записей, но когда я вхожу во второй раз в SignupStepperVC
и получаю sub-categories
.Я получаю 40 записей.Я снова следую вышеперечисленным шагам и возвращаюсь на главный экран, возвращаюсь к SignupStepperVC
и извлекаю sub-categories
из базы данных, получая 57 записей.Это случайно.
Итак, это постоянно увеличивающееся количество записей, даже в базе данных всего 20 записей.
Пожалуйста, помогите мне решить эту проблему.