2

我正在使用核心数据来存储我的主数据并根据与之UI相关的用户交互视图对其进行更新。

首先,我SignupStepperVC使用以下方法获取一些数据并将其传递给SignupGroupVC嵌入UIContainerViewinside的数据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 的记录。我再次按照上述步骤返回主屏幕,返回SignupStepperVCsub-categories从数据库中获取 57 条记录。这是随机的。

因此,即使在数据库中只有 20 条记录,记录的数量也在不断增加。

请帮我解决这个问题。

4

0 回答 0