更新核心数据uitableview Xcode

更新核心数据uitableview Xcode,uitableview,core-data,xcode7,tableviewcell,Uitableview,Core Data,Xcode7,Tableviewcell,我有一个应用程序,我正在使用核心数据填充单元格中的文本标签,以获得uitableview。 它是一个使用用户名和密码填充单元格的应用程序。通过匹配用户名和密码以及单元格中显示的信息(游戏赢了和输了),我可以判断用户单元格是新的还是更新已经存在的单元格。这在一定程度上起了作用。如果没有与用户名和密码相关的任何分数记录,并且如果存在用户名和密码链接到tableview中特定索引的记录,我可以创建一个新单元格。记录新分数时,如果是新对手,则将其添加为新单元格;如果用户已在系统中,则更新旧单元格。 问题

我有一个应用程序,我正在使用核心数据填充单元格中的文本标签,以获得uitableview。 它是一个使用用户名和密码填充单元格的应用程序。通过匹配用户名和密码以及单元格中显示的信息(游戏赢了和输了),我可以判断用户单元格是新的还是更新已经存在的单元格。这在一定程度上起了作用。如果没有与用户名和密码相关的任何分数记录,并且如果存在用户名和密码链接到tableview中特定索引的记录,我可以创建一个新单元格。记录新分数时,如果是新对手,则将其添加为新单元格;如果用户已在系统中,则更新旧单元格。
问题是,如果我关闭应用程序,然后重新打开它,虽然单元格文本标签中的信息会更新,但只有原始单元格信息,而不是更新的信息。下面是一些相关的代码 这就是我如何找出是否有一个现有的用户,他们的索引是什么

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory11 = [paths objectAtIndex:0];
    NSString *slasha = [documentsDirectory11 stringByAppendingPathComponent:@"/Names"];
    if (![[NSFileManager defaultManager] fileExistsAtPath:slasha]){
        count = 0;
    }
    else {
    NSArray * directoryContents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:slasha error:nil];




    for (count = 0; count < (int)[directoryContents count]; count++)
    { NSLog(@"File %d: %@", (count + 1), [directoryContents objectAtIndex:count]);
    } NSLog(@"count:%d,",count);
    Names = [NSArray arrayWithArray:directoryContents];
    NSLog(@"namesArray;%@",Names);
    if (count == 0) {
    }
    else if (count == 1) {
        NSString *nameOne = [Names objectAtIndex:0];

        NSArray *coorArray = [nameOne componentsSeparatedByString:@","];
       firstStringa = [coorArray objectAtIndex:0];
        secondStringa = [coorArray objectAtIndex:1];
        if ([fileName2 isEqualToString:firstStringa] && [yourName isEqualToString:secondStringa]) {
            indexNumber = 0;
        }}

就像我说的,如果合适的话,会添加一个新的用户单元,并且只要应用程序在前台或后台打开,旧用户的单元就会重复更新,但当应用程序关闭并重新打开时,只会显示原始的单元信息。我不能正确保存更新的信息。任何帮助都将不胜感激。

因此我发现我没有在tableviewcontroller中释放tableview数组。现在它工作正常。

所以我发现我没有在tableviewcontroller中释放tableview数组。现在它可以正常工作。

根据您对问题的最后总结,听起来您是在保存子上下文,而不是保存到存储的最终父上下文。显示如何定义您的上下文(以及堆栈的其余部分)。从您对问题的最终总结来看,您似乎在保存子上下文,而不是保存到存储的最终父上下文。显示如何定义上下文(以及堆栈的其余部分)。
if ([winsinChess isEqualToString:@"0"] && [winsinBack isEqualToString:@"0"] &&[winsinBattle isEqualToString:@"0"] && [winsinMankala isEqualToString:@"0"] && [winsinCapture isEqualToString:@"0"] && [winsinPente isEqualToString:@"0"] && [winsinLink isEqualToString:@"0"] &&  [losesinChess isEqualToString:@"0"] && [losesinBack isEqualToString:@"0"] && [losesinBattle isEqualToString:@"0"] && [losesinMankala isEqualToString:@"0"] && [losesinCapture isEqualToString:@"0"] && [losesinPente isEqualToString:@"0"] && [losesinLink isEqualToString:@"0"] && scoreOne == 0 && scoreTwo == 0) {
        NSManagedObjectContext *context = [self managedObjectContext];

        // Create a new managed object
        NSManagedObject *newDevice = [NSEntityDescription insertNewObjectForEntityForName:@"Cell" inManagedObjectContext:context];
        [newDevice setValue:yourName forKey:@"name"];

        [newDevice setValue:Seven forKey:@"winloss"];

        NSError *error7 = nil;
        // Save the object to persistent store
        if (![context save:&error]) {
            NSLog(@"Can't Save! %@ %@", error7, [error7 localizedDescription]);
        }

    }
    else {
        NSManagedObjectContext *context = [self managedObjectContext];
        NSManagedObject *selectedDevice = [self.tableDataMainView objectAtIndex:indexNumber ];
        [selectedDevice setValue:yourName forKey:@"name"];

        [selectedDevice setValue:Seven forKey:@"winloss"];
        NSError *error7 = nil;
        // Save the object to persistent store
        if (![context save:&error]) {
            NSLog(@"Can't Save! %@ %@", error7, [error7 localizedDescription]);
        }
               }