2010-02-04 6 views
4

Je ne suis pas vraiment sûr de savoir comment démarrer le débogage de ce problème.Débogage de NSCollectionViews imbriqués

J'ai un NSCollectionView, dont la vue prototype NSCollectionViewItem elle-même contient un NSCollectionView (ainsi qu'un NSArrayController, pour fournir du contenu à cette vue de collection de second niveau). Les deux niveaux de vue de la collection fonctionnent correctement lorsque la vue de niveau supérieur est dans la plume principale.

Cependant, lorsque je copie/colle la vue (et reconnecte toutes les liaisons appropriées) à une nouvelle pointe, que je charge avec loadNibNamed:owner:, la vue de second niveau - mais pas celle de haut niveau - apparaît vide .

Après quelques recherches, j'ai découvert que [email protected] est bien 0. Cependant, le NSArray le contrôleur est lié à quand on a demandé [email protected], (propriétaire de representedObject.quizzes de fichier), retourne 2. devrait en effet revenir

quizzes 2, pour J'ai fait [testCategoryA setQuizzes:[NSArray arrayWithObjects:testQuizA1,testQuizA2,nil]];. J'ai testé le réglage des quiz avant que les plumes soient chargées et après. La situation est la même dans les deux cas.

Donc, en conclusion, j'ai 2 niveaux de vue sur la collecte, avec 2 niveaux de contrôleurs RAID. Le niveau supérieur fonctionne toujours. Mais le 2ème niveau se brise chaque fois que le niveau supérieur n'est pas dans le fichier nib principal. Et il me semble que la partie sur le 2ème niveau qui casse est la liaison du contrôleur RAID. Je ne sais même pas comment démarrer le débogage dans ce gâchis de plumes enchevêtrées. Suggestions?

+0

Quand et comment remplissez-vous le tableau 'quizzes' de l'objet représenté? –

+1

Avez-vous pu comprendre cela? Je pourrais vraiment utiliser la solution :) – Chetan

Répondre

1

Il semble que votre tableau de questionnaires n'envoie pas de notifications KVO ou que vous le modifiez d'une manière non conforme à la norme KVO (c'est-à-dire, "éditer le tableau derrière le contrôleur").

De plus, vous pouvez vérifier dans Indexed Accessor Methods pour votre tableau des jeux-questionnaires pour des raisons de performance.

+0

Je ne comprends pas comment '[testCategoryA setQuizzes: [NSArray arrayWithObjects: testQuizA1, testQuizA2, nil]];' pourrait ne pas être conforme à la norme KVO. Y at-il plus à considérer ici qu'un accesseur correctement nommé? – andyvn22

+0

Joshua Nozzi: Non, c'est faux. Les accesseurs donnent des notifications KVO gratuitement sauf si vous dites explicitement à KVO de ne pas le faire. (Une exception est, IIRC, CALayers.) Ceci est détaillé dans la valeur-clé documentation d'observation: http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/KeyValueObserving/Concepts/AutoVsManual.html –

+0

Il apparaît vous avez raison. Merci d'avoir fait remarquer cela. –