【问题标题】:Issue with Coredata updateCoredata 更新问题
【发布时间】:2015-09-04 23:31:03
【问题描述】:

我正在尝试使用此函数更新 coredata 中的某些货币缩写。

- (void)updateCurrencies
{
    NSManagedObjectContext *managedObjectContext = self.managedObjectContext;
    if (managedObjectContext != nil) {

        NSFetchRequest *request = [[NSFetchRequest alloc] init];
        [request setEntity:[NSEntityDescription entityForName:@"Transaction" inManagedObjectContext:managedObjectContext]];

        NSError *error = nil;
        NSArray *results = [managedObjectContext executeFetchRequest:request error:&error];
        NSLog(@"Number of data : %lu", (unsigned long)[results count]);

        for (int i = 0; i < [results count]; i++) {
            Transaction* t = [results objectAtIndex:0];
            NSLog(@"currency: %@", t.currency);
            if ([t.currency isEqualToString:@"CAN"]) {
                t.currency = @"CAD";
                NSLog(@"new currency set.");
            }
            [self saveContext];
        }
    }
}

我在didFinishLaunchingWithOptions 中调用了这个函数。现在,日志确实告诉我t.currency 已更新为 CAD。但是,当我在 HomeViewController 中再次检索数据并记录货币时,它又回到了 CAN。这是 HomeViewController 中的代码,

NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *transaction = [NSEntityDescription entityForName:@"Transaction" inManagedObjectContext:_managedObjectContext];
[request setEntity:transaction];
request.predicate = [NSPredicate predicateWithFormat:@"transactionToUser = %@", [self.content objectAtIndex:i]];

NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"postdate" ascending:NO];
NSArray *descriptors = [[NSArray alloc] initWithObjects:descriptor, nil];
[request setSortDescriptors:descriptors];

NSError *error = nil;
NSMutableArray *mutableResult = [[_managedObjectContext executeFetchRequest:request error:&error] mutableCopy];
if (mutableResult == nil) {
    //handle error
}

for (int k = 0; k < [mutableResult count]; k++) {
    Transaction *t = [mutableResult objectAtIndex:k];
    NSLog(@"currency xx: %@", t.currency);
}

我做错了什么?任何帮助表示赞赏。谢谢。

【问题讨论】:

    标签: ios cocoa-touch core-data


    【解决方案1】:

    用不同的 for 循环修复它。

    for (Transaction *t in results) 
    {
        ...
    }
    

    【讨论】:

      猜你喜欢
      • 2012-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-07
      相关资源
      最近更新 更多