2016-05-29 113 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數組。現在它工作正常。