2016-12-27 3 views
0

Je dois donc passer par exemple de ma classe personnalisée d'un UIViewController à l'autre:mise à jour de classe propriété Swift

targetVC.reservation = self.reservation! 
print(self.reservation!.id, "before") 
targetVC.reservation!.phoneNumber = self.phoneTextField.text!.phoneToString() 
targetVC.reservation!.id = id 
print(self.reservation!.id, "after") 

Mon problème est que self.reservation!.id est également changé: « avant » il est "", et "après" est id. Pourquoi cela arrive-t-il et comment éviter cela?

+0

Plus de code est nécessaire avant que nous puissions vous aider. – dfd

+0

de quoi avez-vous exactement besoin? Parce que mon problème est que 'targetVC.reservation! .id = id' met aussi à jour' self.reservation! .id' – JuicyFruit

+0

Les classes sont de type ref. donc à chaque fois que vous assignez 'targetVC.reservation! .id = id', cela change aussi la valeur' self.reservation.id'. Les deux pointant vers le même objet. – Sahil

Répondre

2

Vous pouvez utiliser mutableCopy() avec votre objet, mais pour que votre classe personnalisée doit s'étend de NSObject et son type de retour est Any donc vous devez taper explicitement jeté son résultat à votre CustomClass.

targetVC.reservation = self.reservation!.mutableCopy() as! YourCustomClass 
1

Les classes sont de type ref. Donc, chaque fois que vous attribuez le targetVC.reservation!.id = id, il change également la valeur self.reservation.id. Les deux pointant vers le même objet. Si vous ne voulez pas modifier la valeur reservation.id lorsque vous modifiez targetVC.reservation!.id, vous pouvez créer une copie de votre classe en utilisant mutableCopy mais votre classe doit étendre NSObject comme @Nirvad D ou vous pouvez utiliser Structures qui est des types de valeur.

Vous pouvez aller à la documentation pour plus de lire Classes and Structures