2011-06-22 16 views
0

私はNSLogの問題を抱えています。非常にイライラしますが、もし誰かが本当に素晴らしい光を放つことができたら。私は私のアプリデリゲートから、私はこれらのNSLogは一貫性のある結果を返さない

2011-06-22 09:56:54.734 CoCoach[33182:207] Selected Team 1 : _NSIndexPathUniqueTreeNode 
2011-06-22 09:56:54.735 CoCoach[33182:207] Selected Team 0 : __NSCFSet 
2011-06-22 09:56:54.735 CoCoach[33182:207] Selected Team : __NSCFSet 
2011-06-22 09:56:54.736 CoCoach[33182:207] Selected Team : {(
)} 
2011-06-22 09:56:54.737 CoCoach[33182:207] Selected Team 1 : _NSIndexPathUniqueTreeNode 
2011-06-22 09:56:54.737 CoCoach[33182:207] Selected Team 0 : __NSCFSet 
2011-06-22 09:56:54.738 CoCoach[33182:207] Selected Team : _NSIndexPathUniqueTreeNode 
2011-06-22 09:56:54.738 CoCoach[33182:207] Selected Team : <_NSIndexPathUniqueTreeNode: 0x703e6c0> 
2011-06-22 09:58:30.082 CoCoach[33189:207] Selected Team 1 : __NSArrayM 
2011-06-22 09:58:30.083 CoCoach[33189:207] Selected Team 0 : NSCFString 
2011-06-22 09:58:30.083 CoCoach[33189:207] Selected Team : NSCFString 
2011-06-22 09:58:30.084 CoCoach[33189:207] Selected Team : Koch 
2011-06-22 09:58:30.084 CoCoach[33189:207] Selected Team 1 : __NSArrayM 
2011-06-22 09:58:30.085 CoCoach[33189:207] Selected Team 0 : NSCFString 
2011-06-22 09:58:30.085 CoCoach[33189:207] Selected Team : __NSArrayM 
2011-06-22 09:58:30.086 CoCoach[33189:207] Selected Team : (
) 
2011-06-22 09:59:17.825 CoCoach[33192:207] Selected Team 1 : _UITableViewReorderingSupport 
2011-06-22 09:59:17.826 CoCoach[33192:207] Selected Team 0 : NSCFString 
2011-06-22 09:59:17.826 CoCoach[33192:207] Selected Team : NSCFString 
2011-06-22 09:59:17.826 CoCoach[33192:207] Selected Team : Smith 
2011-06-22 09:59:17.827 CoCoach[33192:207] Selected Team 1 : _UITableViewReorderingSupport 
2011-06-22 09:59:17.827 CoCoach[33192:207] Selected Team 0 : NSCFString 
2011-06-22 09:59:17.828 CoCoach[33192:207] Selected Team : _UITableViewReorderingSupport 
2011-06-22 09:59:17.828 CoCoach[33192:207] Selected Team : <_UITableViewReorderingSupport: 0x5b3cf30> 
を返した行の

 NSLog(@"Selected Team 1 : %@", [[[appDelegate teamRoster]objectAtIndex:1] class]); 
     NSLog(@"Selected Team 0 : %@", [[[appDelegate teamRoster]objectAtIndex:0] class]); 

     NSLog(@"Selected Team : %@", [[[appDelegate teamRoster]objectAtIndex:indexPath.row] class]); 
     NSLog(@"Selected Team : %@", [[appDelegate teamRoster]objectAtIndex:indexPath.row]); 

と3回の配列を呼び出すようにしようとしています

また、私はちょうど何を見て確認するときに配列は次のようになります。

2011-06-22 09:58:30.078 CoCoach[33189:207] Team Roster Array: (
    "Koch", 
    "Smith" 
) 

これはまさに予想通りです。

何がありますか?何か案は。ありがとう。

更新:配列を追加し機能

- (void)fetchRecords:(NSString *)teamToFind{ 

    teamRoster = [[NSMutableArray alloc] init]; 

    NSManagedObjectContext *context = [self managedObjectContext]; 
    // Define our table/entity to use 
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Teams" inManagedObjectContext:context]; 

    // Setup the fetch request 
    NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
    [request setEntity:entity]; 

    // Define how we will sort the records 
    NSSortDescriptor *teams = [[NSSortDescriptor alloc] initWithKey:@"Team" ascending:NO]; 

    NSArray *sortDescriptors = [NSArray arrayWithObject:teams]; 


    [request setSortDescriptors:sortDescriptors]; 
    [teams release]; 

    // Fetch the records and handle an error 
    NSError *error; 
    NSMutableArray *mutableFetchResults = [[context executeFetchRequest:request error:&error] mutableCopy]; 


    if (!mutableFetchResults) { 
     // Handle the error. 
     // This is a serious error and should advise the user to restart the application 
    } 

    // Save our fetched data to an array 
    [self setStoredTeams:mutableFetchResults]; 
    NSLog(@"Number of teams, %i", [storedTeams count]); 

// NSMutableArray *temp = [[NSMutableArray alloc] init]; 

    for (Teams *diffTeams in storedTeams) { 
     NSLog(@"Name: %@", diffTeams.Team); 
     NSSet *rowers = [[NSSet alloc] initWithSet:diffTeams.Rowers]; 
     for (Rowers *roster in rowers){ 
      if ([diffTeams.Team isEqualToString:teamToFind]) { 
       NSString *fullName = [NSString stringWithFormat:@"%@ %@", roster.FName, roster.LName]; 
       NSLog(@"%@", fullName); 
       [teamRoster addObject:fullName]; 
       [fullName release]; 
       NSLog(@"Team Roster Array: %@", teamRoster);     
      } 
     } 
    } 
    if (![context save:&error]) { 
     //This is a serious error saying the record could not be saved. 
     //Advise the user to restart the application 
    } 

    [mutableFetchResults release]; 
    [request release]; 
} 
+2

秒の時間をリリースされたにされていたあなたは、オブジェクトが '[appDelegate teamRoster]'正しくに追加保持していますか?ポインタは一旦解放されたオブジェクトに設定され、他のオブジェクトに対してメモリアドレスが再利用されたように見えます。配列を設定するコードを追加してください。 – rckoenes

+0

よく質問をして、私のappDelegateであなたの質問に答えます。配列を設定したら、[teamRoster retain]と言う必要がありますか?出発前に? –

+0

は、最初に配列をどのように作成したかによって異なります。 [NSMutableArray array]のようなクラスメソッドを使用した場合は、[はい]を選択します。 alloc/initスタイルの作成を使用した場合、no(多分) –

答えて

0

私は私がオブジェクトに置くことをNSStringのを解放しますが、ループのためにオブジェクトが作成され、

0

私はあなたのNSLogパラメータでNSStringFromClass([[[appDelegate teamRoster]objectAtIndex:1] class])を使用することにしたいと思います。

関連する問題