简体   繁体   中英

NSLog not returning consistent results

I have an NSLog problem where it wont keep the results the same between loads. Its quite frustrating, but if someone could shed some light that would be really great. I'm trying to call an array from my app delegate

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

and three times in a row i have these returned

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>

2

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 : (
)

3

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>

Also when i just check to see whats in the array i get the following.

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

Which is exactly as expected.

What gives? Any ideas. Thanks.

Update : Function that adds the array

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

我认为您想在NSLog参数中使用NSStringFromClass([[[appDelegate teamRoster]objectAtIndex:1] class])

我正在释放放入对象的NSString,但是在for循环中,对象已创建并再次释放

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM