2010-06-26 6 views
0

Ok, je suis très nouveau sur Obj-C et Cocoa, mais je suis sûr que mes liaisons sont correctes. J'ai fait des recherches sur google, j'ai cherché le débordement de pile et j'ai vérifié mes valeurs encore et encore.Les liaisons Cocoa entre NSTableView et NSMutableArray refusent de se mettre à jour

Alors, voici mes liaisons:

Ils se connectent à cette classe:

@interface TMMaddMangaWindowDelegate : NSWindowController { 
... 
} 
... 
@property (copy) NSMutableArray* mangaList; 
... 
@end 



@implementation TMMaddMangaWindowDelegate 
... 
@synthesize mangaList; 
// - (NSMutableArray*) mangaList { 
// NSLog(@"mangaList was called!"); 
// return mangaList; 
//} 
//- (void) setMangaList:(NSMutableArray *) input{ 
// NSLog(@"setMangaList was called!"); 
// [mangaList autorelease]; 
// mangaList = [input retain]; 
//} 
... 
-(void) populateList:(NSArray*)list{ 
    NSMutableArray* newArray = [[NSMutableArray alloc] initWithArray:list]; 
    NSLog(@"Populating List."); 
    for(NSXMLNode* node in list){ 
     [newArray addObject:node.description]; 
     //[[self mutableArrayValueForKey:@"mangaList"] addObject:node.description]; 
      //NSLog(@"%@", node.description); 
    } 
    [self setMangaList:newArray]; 
    [[self chapterListDownloadIndicator] stopAnimation:self]; 
} 

Comme vous pouvez le voir, j'ai essayé aussi l'approche mutableArrayValueForKey, qui n'a rien donné. Je sais pertinemment que mangaList gagne des objets.

J'ai travaillé dessus pendant un moment, et j'ai probablement fait une erreur stupide.

Merci d'avance.

Répondre

0

Il s'est avéré que le problème était que la fenêtre n'avait pas l'identité de classe de Files Owner définie sur mon contrôleur de fenêtre/délégué. Au moment où j'ai mis cela, la fenêtre a pris vie.

Ce problème empêchait également mon NSProgressIndicator de fonctionner.

3

Il semble que vous modifiez mangaList derrière le dos du contrôleur RAID. Chaque fois que vous faites un changement à mangaList, vous devez d'abord appeler [self willChangeValueForKey:@"mangaList"]; puis [self didChangeValueForKey:@"mangaList"]; une fois que vous avez terminé avec le changement. Cela permettra au contrôleur RAID de savoir ce qu'il a changé.

Questions connexes