Fetching Arrays From Core Data
===

I've set up a model with a few string fields and a few array fields. The model saves correctly, but it acts strangely when I try and fetch the data. I have a DataManager class which handles the fetching/saving from/to Core Data, and inside of the Manager I've verified that when I fetch an entity, the arrays are fetched, but when it's returned to the class that's calling it, the arrays are nil (the strings, on the other hand, arrive just fine). Here's the fetch code and the code that parses out the returned value from the fetch:

    - (NSArray*) getLevelWithID:(NSString*)level
    {
        NSEntityDescription *pEntityDescription = [NSEntityDescription entityForName:@"Level" inManagedObjectContext:m_pMOC];
        NSFetchRequest *pRequest = [[[NSFetchRequest alloc] init] autorelease];
        [pRequest setEntity:pEntityDescription];
        NSPredicate* pPredicate = [NSPredicate predicateWithFormat:@"Level_ID == %@", level];
        [pRequest setPredicate: pPredicate];
        
        NSError* pError;
        NSArray* pLevels = [m_pMOC executeFetchRequest:pRequest error:&pError];
        if (pLevels == nil) 
        {
            NSLog(@"Could not find the level with Level_ID = %@",level);
            abort();
        }
        
        NSArray* pAccels = [pLevels valueForKey:@"Accelerators"];
        NSArray* pTraps = [pLevels valueForKey:@"Traps"];
        NSArray* pWalls = [pLevels valueForKey:@"Walls"];
        NSArray* pWhirls = [pLevels valueForKey:@"Whirls"];
    
        return pLevels;
    }

I set a break point on the last four Arrays, and they have objects in them, but in the function that retrieves them (shown below), they are nil.

    - (void) initLevel:(NSArray*)pLevelObjects
    {
        Level* pLevel = [pLevelObjects objectAtIndex:0];
        
        NSString* pJupiter = pLevel.Ball;
        NSString* pDest = pLevel.Destination;
        
        NSArray* pAccels = [pLevel valueForKey:@"Accelerators"];
        NSArray* pTraps = [pLevel valueForKey:@"Traps"];
        NSArray* pWalls = [pLevel valueForKey:@"Walls"];
        NSArray* pWhirls = [pLevel valueForKey:@"Whirls"];
        ... (other initialization of the level) ...
    }

I'm perplexed by this. The string values are there, but the arrays are not. I tried using the dot notation originally (NSArray* pAccels = pLevel.Accelerators, etc), but with the same result.

Ideas?

EDIT: initLevel is called from the view controller:

    - (void) startGameWithLevelID:(NSString*)pLevelID
    {
        NSLog(@"MyViewController - beginGameWithLevelID");
        NSArray* pLevel = [[DataManager getDataManager] getLevelWithID:pLevelID];
        if (pLevel == nil || [pLevel count] == 0) 
        {
            NSLog(@"Didn't retrieve any level with id %@", pLevelID);
            abort();
        }
        else
        {
            CGRect newFrame = makeScreen([UIScreen mainScreen].applicationFrame);
            GameBoard* pGB = [[GameBoard alloc] initWithFrame: newFrame];
            pGB.m_pMyVC = self;
            [pGB initLevel: pLevel];
            [self.view addSubview: (UIView*)pGB];
            
            [pGB release];
        }
    }