【问题标题】:passing values string values to an object and recieving a string in return in ios将值字符串值传递给对象并在 ios 中返回字符串
【发布时间】:2013-06-19 14:43:11
【问题描述】:

您好,这是一个非常简单的应用程序,它通过 2 个文本框接收 2 个参数,然后将它们汇总并显示在名为 result 的标签中。这个想法是通过一个称为大脑的对象来处理它,在后面的部分中我已经给出了代码。问题是 foo 为零,当您单击按钮时,结果一无所获。 计划是使用它为我已完成的更大应用程序构建更好的模型视图架构。

 #import "calbrain.h"
    #import "ImmyViewController.h"
    @interface ImmyViewController ()
    @property (nonatomic, strong) calbrain *brain;
    @end
    @implementation ImmyViewController
    @synthesize brain;
    @synthesize num1;
    @synthesize num2;
    @synthesize result;

        -(calbrain *) setBrain
        {
            if (!brain) {
                    brain = [[calbrain alloc] init];

            }

            return brain;
         }

    - (IBAction)kickit:(UIButton *)sender {
                 NSString *number1 = self.num1.text;
                 NSString *number2 = self.num2.text;

            NSString *foo;

            foo = [brain calculating:number1 anddouble:number2];
            self.result.text = foo;
            //  self.result.text = [brain calculating:self.num1.text    anddouble:self.num2.text];

    }
        @end

        @implementation calbrain

    -(NSString *) calculating:(NSString *)number1 anddouble:(NSString *)number2

    {
            double numb1 = [number1 doubleValue];
            double numb2 = [number2 doubleValue];

            double newresult = (numb1 + numb2);


            NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];

            NSString *numberAsString = [numberFormatter stringFromNumber:[NSNumber n     numberWithFloat:newresult]];

            return numberAsString;}

【问题讨论】:

    标签: ios nsstring uitextfield parameter-passing message-passing


    【解决方案1】:

    (IBAction)kickit:(UIButton *)sender 函数中使用NSLog 检查您的brain。我猜你没有初始化brain。如果不是这种情况,则需要提供更多代码。

    【讨论】:

    • @synthesize brain = _brain; -(calbrain *) 大脑{ if (!_brain) { _brain = [[calbrain alloc]init]; } 返回 _brain; }
    【解决方案2】:

    我就是这样做的,我得出的结论是大脑的设置器工作不正常

    我在需要分配初始化大脑之前放置了 alloc init 代码行,它工作正常,我删除了 setter,

    我会回去看看为什么它没有覆盖由属性创建的设置器,但有趣的东西仍然如此。这意味着我可以更改我实际更大的应用程序以拥有一个更干净更有条理的架构。

    感谢您的宝贵时间。

    【讨论】:

    • 他的问题在于我的 setter 方法这是正确的代码 – Imran Raja 昨天 @synthesize brain = _brain; -(calbrain *) 大脑{ if (!_brain) { _brain = [[calbrain alloc]init]; } 返回 _brain; } – Imran Raja 昨天
    【解决方案3】:

    尝试使用您的 setter 方法在 viewDidLoad() 中初始化您的大脑对象。您必须调用 setter 方法来初始化您的 brain 对象。

    像这样的

    viewDidLoad()
    {
      brain = [self setBrain]; 
      //You can also do this
      brain = [[calbrain alloc] init];
    } 
    

    并在您的 (IBAction)kickit: 方法中使用该 brain 对象。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-11
      • 1970-01-01
      • 1970-01-01
      • 2017-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多