2016-05-29 121 views
1

我有一个应用程序,我正在使用核心数据填充我的单元格中的文本标签为一个uitableview。 这是一个使用用户名和密码填充单元格的应用程序。通过匹配用户名和密码以及单元格中显示的信息(游戏赢得和失去),我可以判断用户单元是新单元还是更新已经存在的单元。这正在努力。如果没有任何记录连接到该用户名和密码,并且如果有记录比用户名和密码链接到tableview中的特定索引,我可以创建一个新的单元格。当新记录被记录时,如果它是新对手则被添加为新的单元,或者如果用户已经在系统中则更新旧单元。
问题是,虽然单元格文本标签中的信息是更新的,如果我关闭应用程序,然后重新打开它只有原始单元格信息没有更新的信息。下面是一些相关的代码 我这是怎么找出是否有一个现有的用户,他们是在更新核心数据uitableview Xcode

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; 
     }} 

什么指标这是我发现,如果他们是一个新的用户和他们的信息保存到新小区和更新单元,如果他们是老用户

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]); 
     } 
       } 

就像我说的,如果适当和老用户的电池被重复,只要更新应用程序是在前台或后台但是当打开一个新的用户小区被添加应用程序关闭并重新打开,只显示原始单元格信息。我不能正确保存更新的信息。任何帮助将不胜感激。

+0

从问题的最终总结中,您听起来像是在保存子上下文,但不是保存到商店的最终父上下文。显示你的上下文(以及堆栈的其余部分)是如何定义的。 – pbasdf

回答

0

所以我想通了,我没有在我的tableviewcontroller处理我的tableview数组。现在它工作正常。