types de puntero incompatibles que asignan a 'UILabel * __ weak' a 'NSString * __ strong'?

He estado haciendo algo aquí usando objective-c, pero soy un principiante en este idioma, y ​​eso es lo que hice:

hay una class, llamada "firstviewclass", que está bajo el control de mi primera vista, en esta vista hay un campo de text que el usuario pone un número. el campo de text se encuentra en la primera vista de class. h se denomina "setNumber". Hay otra class, llamada "secondviewclass" que tiene el control de la segunda vista, en esta vista hay una label que está en la segunda classview.h, y quiero que esta label reciba el valor que el usuario puso en el campo de text de la primera vista mis códigos:

firstviewclass.h:

#import <UIKit/UIKit.h> @interface firstviewclass : UIViewController @property (strong, nonatomic) IBOutlet UITextField *setNumber; - (IBAction)gotonextview:(id)sender; @end 

secondviewclass.h:

 #import <UIKit/UIKit.h> #import "firstviewclass.h" @interface secondviewclass : UIViewController @property (weak, nonatomic) IBOutlet UILabel *labelthatrecivesthetextfieldvalue; @end 

secondviewclass.m:

 #import "secondviewclass.h" #import "firstviewclass.h" @implementation secondviewclass @synthesize labelthatrecivesthetextfieldvalue; -(void)viewDidLoad{ [super viewDidLoad]; firstviewclass *object = [[firstviewclass alloc] init]; NSString *string = [[NSString alloc] initWithFormat:@"%i", [object.setNumber.text intValue]]; labelthatrecivesthetextfieldvalue = string; //here is where that error appears "incompatible pointer types assigning to 'UILabel *__weak' to 'NSString *__strong'" } @end 

He cambiado lo que me pediste que cambie, pero cuando lo pruebo en el simulador cualquier número que puse en el campo de text, aparece en la label como 0 … ¡Realmente no sé qué hacer!

Debería ser:

 labelthatrecivesthetextfieldvalue.text = string; 

Bajo el capó:

Después de que tu xib instanció una UILabel y obtienes su reference usando la palabra key IBOutlet , entonces estás intentando usar el puntero UILabel para apuntar a un espacio en memory asignado e instanciado para un NSString , por eso estás teniendo este problema. Es probable que también haya recibido una advertencia sobre la asignación que intentó hacer:

 labelthatrecivesthetextfieldvalue = string; 

Siempre debe tratar de corregir las advertencias.

Lo que quieras:

Simplemente quiere que UILabel muestre el NSString que acaba de crear, y para eso debe usar la UILabel's text UILabel's .

Obtiene ese error porque está apuntando una label a una cadena. Son de diferentes classs, por lo que no está permitido. Lo que realmente quiere decir es que desea que el text de su label tome el valor de la cadena. Por lo que debe configurar el campo de text de la label:

 labelthatrecivesthetextfieldvalue.text = string; 

Mis disculpas por mi respuesta anterior, incorrecta.

Incidentalmente, también debe considerar usar camelCase para nombrar sus variables. Esa es la convención para el objective c. es decir, llamarlo labelThatRecievesTheTextFieldValue en labelThatRecievesTheTextFieldValue lugar. Esto no afecta la capacidad de su código para funcionar, solo convención.