繁体   English   中英

隐式将NSNumber *转换为int

[英]implicit conversion NSNumber* to int

我有两个视图控制器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

如何解决

  • NSNumber是一个对象
  • int / NSInteger是原始标量类型

两种类型不可互换。

最简单的解决方案是使用ObjC文字从NSInteger创建一个NSNumber对象

((DetailsViewController *)segue.destinationViewController).receivedData =
                         @(self.textFieldValueToDispatch.text.integerValue);

@(123)[NSNumber numberWithInteger:123]

将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]);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM