i have two view controllers VC1 and VC2. VC1 has a textField and button. the VC2 has a property of type NSNumber* .
I am trying to pass the value in the textfield in VC1 to VC2, so I did the following in VC1
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:SEGUE_IFENTIFIER_TO_DETAILS_VIEW_CONTROLLER]) {
((DetailsViewController *)
segue.destinationViewController).receivedData =
self.textFieldValueToDispatch.text.intValue;
}
but I receive an error saying : implicit conversion on int_nullable
how to solve it
NSNumber
is an object int
/ NSInteger
is a primitive scalar type Both types are not interchangeable.
The easiest solution is to create an NSNumber
object from NSInteger
with ObjC literal
((DetailsViewController *)segue.destinationViewController).receivedData =
@(self.textFieldValueToDispatch.text.integerValue);
@(123)
is the same as [NSNumber numberWithInteger:123]
Converting NSString to Int
int value = [@"1234" integerValue]; // Int Type
Converting Int to NSNumber
// Using NSNumber methods
NSNumber * number = [NSNumber numberWithInt:1234];
// Using NSNumber literals
NSNumber * number = @(1234);
Converting String to NSNumber
// Using NSNumber methods
NSNumber * number = [NSNumber numberWithInt:[@"" integerValue]];
// Using NSNumber literals
NSNumber * number = @([@"" integerValue]);
Your Solution
((DetailsViewController *) segue.destinationViewController).receivedData =
@([self.textFieldValueToDispatch.text integerValue]);
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.