更新核心数据uitableview Xcode



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

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

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

所以我发现了这一点,我没有在表视图控制器中取消分配表视图数组。现在它运行良好。

最新更新