gpt4 book ai didi

ios - 我得到这个 “Thread 1: signal SIGABRT”

转载 作者:行者123 更新时间:2023-12-03 17:37:38 29 4
gpt4 key购买 nike

我不知道为什么我总是收到此错误。每当我按应用程序中的按钮时,整个事件就会崩溃。这是代码:

#import "additionViewController.h"

@interface additionViewController (){
}

@end

@implementation additionViewController

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}

- (IBAction)getValue: (id)sender {
self.numberOne = (NSNumber *)self.firstNum.text;
self.numberTwo = (NSNumber *)self.secondNum.text;
self.fnumberOne = [self.numberOne floatValue];
self.fnumberTwo = [self.numberTwo floatValue];

self.finalValue = [NSNumber numberWithFloat:(self.fnumberOne + self.fnumberTwo)];

self.sum.text = (NSString *)self.finalValue;


}
@end

这是我自己尝试制作的第一个iOS应用。很简单不上App Store或其他任何东西。

最佳答案

假设firstNum和secondNum是UITextFields-这些对象的text属性将是NSStrings。您无法通过强制转换为NSNumber将它们转换为数字。这只会更改指针的类型,但实际上无法将数据的表示形式从文本转换为数字。

最简单的解决方案是:

self.fnumberOne = self.firstNum.floatValue;
self.fnumberTwo = self.secondNum.floatValue;
floatValue属性实际上会将文本转换为 float。然后,也许您甚至不需要 self.numberOneself.numberTwo属性?如果仍然这样做,则可以这样做(如果需要,也可以使用self.finalNumber):
self.fnumberOne = self.firstNum.floatValue;
self.fnumberTwo = self.secondNum.floatValue;
self.numberOne = @(self.fnumberOne);
self.numberTwo = @(self.fnumberTwo);
@()语法是一种将基元包装为其关联对象类型(在这种情况下为 NSNumber)的便捷方法。

另外, self.sum.text = (NSString *)self.finalValue也有类似的问题-您不能使用C强制转换运算符,您需要将值实际转换回字符串。简单的解决方案是:
self.sum.text = [NSString stringWithFormat:@"%f", self.fnumberOne + self.fnumberTwo];

如果您需要更强大的支持,则可以使用 NSNumberFormatter 等使用更高级的方法与数字值进行相互转换。有很多有关的文档。

关于ios - 我得到这个 “Thread 1: signal SIGABRT”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18021478/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com