2010-11-29 21 views
0

Une chose étrange se produit ici.La chaîne qui ne reçoit pas de nouvelle valeur est toujours (nulle)

NSString *string = [powerPickerVC.powerList objectAtIndex:selRow]; 
NSLog(@"powerPicker row = %@", string); //this returns me the string from powerList 
repVC.selectedPower = string; //selectedPower doesn't receive the new value and returns (null) 
NSLog(@"selectedPower = %@", repVC.selectedPower); 

Et repVC.selectedPower retourne toujours (null)!

Juste avant ce morceau de code, j'ai ceci:

selectedRowPower = [powerPickerVC.powerPicker selectedRowInComponent:0]; 
repVC.selectedRowInObjectPicker = selectedRowPower; 
NSLog(@"selectedRowInObjectPicker = %d", selectedRowPower); 

Et cela fonctionne parfaitement. selectedRowInObjectPicker est un NSInteger mais si je peux définir sa valeur, pourquoi ne puis-je pas définir la valeur de selectedPower?

Oui, l'objet est synthétisé et tout ...

+1

Êtes-vous sûr à 100% que l'objet repVC n'est pas nul à cet endroit? C'est la raison la plus probable pour laquelle vous obtenez une telle sortie dans la console. – Vladimir

+0

Oui, j'ai utilisé une autre instance de repVC juste quelques lignes au-dessus et cela a bien fonctionné. –

+0

Comment avez-vous déclaré votre propriété selectedPower dans le fichier .h? – deanWombourne

Répondre

0

Il y a de fortes chances que repVC soit nil. Essayez d'ajouter un point d'arrêt là et voir.

+0

Il s'avère qu'il était en réalité. J'ai ajouté un alloc et cela a fonctionné. Merci! –

-1

Utilisez les touches [NSString stringWithString:] pour initialiser les chaînes.

Dans votre cas,

repVC.selectedPower = [[NSString stringWithString: string];

Et assurez-vous que le récepteur est un NSString correctement déclaré comme prévu.

+0

quelle différence va faire l'appel stringWithString (en supposant que la propriété selectedPower est déclarée correctement)? – Vladimir

+0

Oui, j'ai déjà essayé. Me renvoie toujours 'selectedPower = (null)' dans la console du débogueur. Mon NSString est déclaré. 'NSString * selectedPower;' et '@property (nonatomic, retain) NSString * selectedPower;' plus le synthétiseur. –

0

Avez-vous défini une méthode appelée -setSelectedPower: par hasard?

+0

Non, je n'ai pas. Pourquoi devrais-je? C'est une chaîne publique à laquelle je veux juste accéder depuis une autre classe. Je veux dire, devrais-je? –

+0

C'est une propriété. Il doit être soutenu par une méthode. Vraisemblablement, vous avez '@ synthesize'd. Je demande parce que si vous avez ajouté une méthode appelée '-setSelectedPower:' il est appelé à la place du setter synthétisé. –