gpt4 book ai didi

iphone - 在不更改 Core Data 对象的情况下修改 NSFetchRequest 结果数组的正确方法

转载 作者:行者123 更新时间:2023-11-29 04:48:40 27 4
gpt4 key购买 nike

我正在从核心数据数据库中检索数据,并尝试迭代数据并在必要时对数据进行更改。当我更改结果数组中的数据时,事实证明我的数据库也在后端发生更改,而没有进行保存。我想知道在不影响后端数据的情况下更改数据的好做法是什么。

这是我更改数据的代码:

 self.singleDayDataPointsForGraph = [[self fuelPurchaseDataForTimePeriodInMonths:self.numberOfMonthsForGraphView] mutableCopy];
for (int i = 0; i < self.singleDayDataPointsForGraph.count; i++) {
FuelPurchase *currentFuelPurchase = [self.singleDayDataPointsForGraph objectAtIndex:i];
if (i < self.singleDayDataPointsForGraph.count + 1 && self.singleDayDataPointsForGraph.count >= 2) {
FuelPurchase *purchaseToCompare = [self.singleDayDataPointsForGraph objectAtIndex:i + 1];
NSDate *firstDate = currentFuelPurchase.dateTimeStamp;
NSDate *secondDate = purchaseToCompare.dateTimeStamp;
NSDateFormatter *dateComparisonFormatter = [[NSDateFormatter alloc] init];
[dateComparisonFormatter setDateFormat:@"yyyy-MM-dd"];

if([[dateComparisonFormatter stringFromDate:firstDate] isEqualToString:[dateComparisonFormatter stringFromDate:secondDate]] ) {
float firstValue = [purchaseToCompare.fillSavings floatValue];
float secondValue = [currentFuelPurchase.fillSavings floatValue];
purchaseToCompare.fillSavings = [NSNumber numberWithFloat:(firstValue + secondValue)];
[self.singleDayDataPointsForGraph removeObjectAtIndex:i];
}
}

fuelPurchaseDataForTimePeriodInMonths: 方法执行获取并返回 NSArray 结果。自己。 singleDayDataPointsForGraph 是一个 NSMutableArray,它将结果数组存储为可变副本。该方法基本上检查数据库中的两个条目,看看它们是否在同一天,如果是,则将燃料购买量相加并删除其中一条记录。我不希望这改变我的后端数据,但事实确实如此。

非常感谢。

最佳答案

它正在做正确的事情。如果你获取一个核心数据对象并修改它,它会立即反射(reflect)你是否保存它。保存部分确保,如果您退出应用程序并返回,数据也会被保存。

因此,对于您的情况,我会避免修改实际的核心数据对象。而是创建一个模仿核心数据对象的结构并修改该结构。

例如,假设我的 coredata 对象是具有名称和年龄属性的 Person。

从 fetch 中获取的对象是这样的 人物1。

您有一个具有相同属性的 PersonSub 类。

现在您可以创建

PersonSub *personSub = [[PersonSub alloc] init]; //You can create a custom init to initilize from Person core data if you like.
personSub.name = person1.name;
personSub.age = person1.age;

现在可以修改如下

personSub.age = personSub.age + 1;

关于iphone - 在不更改 Core Data 对象的情况下修改 NSFetchRequest 结果数组的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9222336/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com