2016-05-29 8 views
1

私は、uitableviewのために自分のセルにテキストラベルを挿入するためにコアデータを使用しているアプリケーションを持っています。 これは、ユーザー名とパスワードを使用してセルを生成するアプリケーションです。ユーザー名とパスワードとセルに表示されている情報(ゲームの勝ち負け)を照合することで、ユーザーセルが新しいセルであるかどうかを知ることができます。これはある点まで働いています。そのユーザー名とパスワードに接続されたスコアのレコードがなく、ユーザー名とパスワードがテーブルビューの特定のインデックスにリンクされているレコードがある場合、新しいセルを作成できます。新しいスコアが記録されると、それは新しい相手である場合には新しいセルとして追加され、ユーザーが既にシステムにいる場合には古いセルが更新されます。
問題は、アプリケーションを終了してから元のセル情報のみが更新された情報でない場合、セルテキストラベルの情報が更新されますが、ここではいくつかの適切なコード が、これは私は、彼らが何であるかを指数既存のユーザーが存在する場合コアデータを更新する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配列を扱いませんでした。今それは正常に動作します。

関連する問題