我正在使用核心数据来存储我的主数据并根据与之UI
相关的用户交互视图对其进行更新。
首先,我SignupStepperVC
使用以下方法获取一些数据并将其传递给SignupGroupVC
嵌入UIContainerView
inside的数据SignupStepperVC
。
所以我的代码SignupStepperVC
是:
self.arrSubCategory = TblSubCategory.fetchSubCategories()
wherefetchSubCategories()
类方法将从实体TblSubCategory
中获取所有内容sub-categories
并返回到VC
调用 this 的位置。
@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
In SignupGroupVC
, I'm have list of group, so when select any group, related to that group all category will display in SignupFirstStepVC
.
self.signupFirstStepVC?.arrSubCategory = arrSubCategory?.compactMap { $0.copy() } as? [TblSubCategory]
在SignupFirstStepVC
中,我列出了所有TblSubCategory
显示在集合视图中的列表。因此,当从中选择任何项目时,它将被选中并bIsSelected
设置为,true
并且再次选择将其设置为“假”。
SignupFirstStepVC 中的代码
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
self.arrSubCategory![indexPath.item].bIsSelected = !self.arrSubCategory![indexPath.item].bIsSelected
collectionView.reloadData()
}
使用委托我会将选定子类别的数组传递给SignupGroupVC
.
这是我面临一些问题的代码流。
因此,当我返回主屏幕并再次来到 时SignupStepperVC
,再次调用获取子类别的方法。
所以,问题是,在数据库中只有 20 条记录,但是当我第二次进入SignupStepperVC
并 fetch时sub-categories
。我得到了 40 的记录。我再次按照上述步骤返回主屏幕,返回SignupStepperVC
并sub-categories
从数据库中获取 57 条记录。这是随机的。
因此,即使在数据库中只有 20 条记录,记录的数量也在不断增加。
请帮我解决这个问题。