每次请求后,Coredata提取请求结果加倍

时间:2019-04-26 11:30:58

标签: ios swift core-data viewcontext

我正在使用核心数据存储我的主数据,并根据与之相关的用户交互视图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条记录的数据库中,这也在不断增加记录的数量。

请帮助我解决此问题。

0 个答案:

没有答案