我正在使用核心数据存储我的主数据,并根据与之相关的用户交互视图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?
现在使用“ SignupGroupVC”的引用,我将子类别数组传递给它。
self.refSignupGroupVC?.arrSubCategory = self.arrSubCategory
在SignupGroupVC
中,我具有组列表,因此,选择任何与该组相关的组时,所有类别都将显示在SignupFirstStepVC
中。
self.signupFirstStepVC?.arrSubCategory = arrSubCategory?.compactMap { $0.copy() } as? [TblSubCategory]
在SignupFirstStepVC
中,我具有在集合视图中显示的所有TblSubCategory
的列表。因此,当从中选择任何项目时,它将被选中并将bIsSelected
设置为true
,再次选择会将其设置为“ false”。
SignupFirstStepVC中的代码
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条记录的数据库中,这也在不断增加记录的数量。
请帮助我解决此问题。