Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios NSNumber*到int的隐式转换_Ios_Objective C - Fatal编程技术网

Ios NSNumber*到int的隐式转换

Ios NSNumber*到int的隐式转换,ios,objective-c,Ios,Objective C,我有两个视图控制器VC1和VC2。VC1有一个文本字段和按钮。VC2的属性类型为NSNumber* 我试图将VC1中文本字段中的值传递给VC2,因此我在VC1中执行了以下操作 - (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ([segue.identifier isEqualToString:SEGUE_IFENTIFIER_TO_DETAILS_VIEW_CONTROLLER]) {

我有两个视图控制器VC1和VC2。VC1有一个文本字段和按钮。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;
}
但是我收到一个错误,它说:
int\u nullable上的隐式转换

如何解决它

  • NSNumber
    是一个对象
  • int
    /
    NSInteger
    是一种基本标量类型
这两种类型都不能互换

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

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

@(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);
// Using NSNumber methods
NSNumber * number = [NSNumber numberWithInt:[@"" integerValue]];

// Using NSNumber literals
NSNumber * number = @([@"" integerValue]);
将字符串转换为NSNumber

// Using NSNumber methods
NSNumber * number = [NSNumber numberWithInt:1234]; 

// Using NSNumber literals
NSNumber * number = @(1234);
// Using NSNumber methods
NSNumber * number = [NSNumber numberWithInt:[@"" integerValue]];

// Using NSNumber literals
NSNumber * number = @([@"" integerValue]);
您的解决方案

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

将此segue.destinationViewController).receivedData=self.textFieldValue更改为Dispatch.text.intValue;到segue.destinationViewController).receivedData=[self.textFieldValueToDispatch.text intValue];并确保您的receivedData为int-typereceived数据的类型为NSNumber*,我使用了您的解决方案,但它不起作用什么不起作用?编译错误?运行时错误?什么错误?当然,只有文本字段包含数值时,转换才会起作用。您的答案是正确的,但如果您编辑您的答案并解释
@(…)
正在执行的操作,则会对其他人有所帮助。