我有两个视图控制器VC1和VC2。 VC1有一个textField和按钮。 VC2具有NSNumber *类型的属性。
我试图将VC1中文本字段中的值传递给VC2,所以我在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;
}
但收到错误消息:implicit conversion on int_nullable
如何解决它
答案 0 :(得分:2)
NSNumber
是一个对象int
/ NSInteger
是原始标量类型两种类型都不可互换。
最简单的解决方案是使用ObjC文字<{1}}从NSNumber
创建一个NSInteger
对象
((DetailsViewController *)segue.destinationViewController).receivedData =
@(self.textFieldValueToDispatch.text.integerValue);
@(123)
与[NSNumber numberWithInteger:123]
答案 1 :(得分:0)
将NSString转换为Int
int value = [@"1234" integerValue]; // Int Type
将Int转换为NSNumber
// Using NSNumber methods
NSNumber * number = [NSNumber numberWithInt:1234];
// Using NSNumber literals
NSNumber * number = @(1234);
将字符串转换为NSNumber
// Using NSNumber methods
NSNumber * number = [NSNumber numberWithInt:[@"" integerValue]];
// Using NSNumber literals
NSNumber * number = @([@"" integerValue]);
您的解决方案
((DetailsViewController *) segue.destinationViewController).receivedData =
@([self.textFieldValueToDispatch.text integerValue]);