您在中的askingPrice属性myManager是NSDecimalNumber一个 Cocoa 类,它围绕十进制数字包装一个对象。你askingPriceTextField.text给你一个NSString你可以转换成一个float或double。
所以基本上你想要做的是在你的文本字段中NSDecimalNumber使用构建一个新的。NSString以下是您的操作方法:
double askingPriceDouble = [self.askingPriceTextField.text doubleValue]; // extract a double from your text field
myManager.askingPrice = [[NSDecimalNumber alloc] initWithDouble:askingPriceDouble]; //create an NSDecimalNumber using your previously extracted double
我在这里使用 alloc-init 方案,因为您将属性设置为assigned。由于 anNSDecimalNumber是一个对象(不是像 那样的基本类型double),因此您要么需要确保您的要价是retained,因此在您需要它之前它不会被释放。另一种方法是像这样声明您的财产:
@property(nonatomic, retain) NSDecimalNumber *askingPrice; // Do not forget the '*' sign when declaring object properties as pointers.
进而:
double askingPriceDouble = [self.askingPriceTextField.text doubleValue];
myManager.askingPrice = [NSDecimalNumber numberWithDouble:askingPriceDouble];
这将起作用,因为您的askingPrice 属性将retain在您设置它时被编辑。
另外,不要忘记确保您的文本字段的内容实际上可以转换为双精度...