【问题标题】:Trying to store float within NSInteger (or find out how to store it in something else)尝试将浮点数存储在 NSInteger 中(或了解如何将其存储在其他东西中)
【发布时间】:2014-03-11 07:58:14
【问题描述】:

我正在尝试将屏幕高度存储在 NSInteger 中。

NSInteger *screenHeight = self.view.frame.size.height;

我也尝试将它存储在 NSStringNSNumber 中,但总是有一个错误提示 Initializing 'NSInteger' (aka ' int*') 具有不兼容类型“CGFloat”(又名“float”)* 的表达式。 我将返回从我稍后在代码中存储的任何内容中获取屏幕大小,但是我可以在什么中存储浮点数?

【问题讨论】:

    标签: ios objective-c xcode cgfloat


    【解决方案1】:

    NSInteger 是基本int 的类型定义。

    你需要使用

    NSInteger screenHeight = self.view.frame.size.height;
    

    *注意:self.view.frame.size.height 返回您float,所以为什么不使用浮点数。

    除非你真的想要一个指向整数的指针,否则永远不要使用NSInteger*


    编辑:

    如果你想要NSNumber 那么

    NSNumber *screenHeight = @(self.view.frame.size.height); //box the value to NSNumber
    

    如果你想要NSString 那么

    NSString *screenHeight = [NSString stringWithFormat:@"%f", self.view.frame.size.height];
    

    【讨论】:

    • 这个答案不正确。 NSIntegerint 的 typedef,仅在 32 位硬件上。在 64 位上,NSIntegerlong 的 typedef。
    【解决方案2】:

    去掉'*' NSInteger 是原始类型。

    NSInteger screenHeight = self.view.frame.size.height;
    

    【讨论】:

      【解决方案3】:

      如果您需要将其存储为对象(即将其添加到数组中),请使用

      NSNumber *screenHeight =[NSNumber numberWithFloat:self.view.frame.size.height];
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-05-05
        • 2011-04-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多