Reputation: 1
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
Upvotes: 1
Views: 464
Reputation: 3580
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]);
Upvotes: 0
Reputation: 285079
NSNumber
is an objectint
/ NSInteger
is a primitive scalar typeBoth 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]
Upvotes: 2