将UILabel值转换为整数xcode

时间:2014-05-29 20:23:44

标签: uikit

在我的程序中,我需要将标签的值作为int。我该怎么办?

这是代码:

@implementation ViewController
@synthesize webview;

- (void)viewDidLoad
{
    [super viewDidLoad];
    [webview loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"google.com"]]];
    [super viewDidLoad];

    self.motionManager = [[CMMotionManager alloc] init];
    self.motionManager.accelerometerUpdateInterval = 1;

    if ([self.motionManager isAccelerometerAvailable]) {
        NSOperationQueue *queue = [[NSOperationQueue alloc] init];
        [self.motionManager startAccelerometerUpdatesToQueue:queue withHandler:^(CMAccelerometerData *accelerometerData, NSError *error) {
            dispatch_async(dispatch_get_main_queue(), ^{
                self.xAxis.text = [NSString stringWithFormat:@"%.2f",accelerometerData.acceleration.x];
                self.yAxis.text = [NSString stringWithFormat:@"%.2f",accelerometerData.acceleration.y];
                self.zAxis.text = [NSString stringWithFormat:@"%.2f",accelerometerData.acceleration.z];
            });
        }]; 
    } else 
        NSLog(@"not active");
}

@end

如何将xAxis的值设为int。将其值作为int后,我想在if语句中进行比较。

由于

2 个答案:

答案 0 :(得分:0)

只需这样做,但我更喜欢NSInteger,这样在64位设备中,性能不会受到影响。 NSInteger根据设备使用的位处理器进行自适应。

[self.xAxis.text integerValue];

但如果你坚持使用ints

[self.xAxis.text intValue];

答案 1 :(得分:0)

在动画管理器更新处理程序中,CMMotionManager将提供对CMAccelerometerData对象的引用。 CMAccelerometerData对象具有CMAcceleration属性(acceleration)。 CMAcceleration是包含xyz组件的结构,每个组件都定义为double。看起来您已经在使用它来填充一些标签的文本值。在此处理程序块中,您已经有x值的数字表示。如果要执行检查(if语句),这是您应该使用的值。

- (void)viewDidLoad
{
    [super viewDidLoad];

    [webview loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"google.com"]]];

    self.motionManager = [[CMMotionManager alloc] init];
    self.motionManager.accelerometerUpdateInterval = 1;

    if ([self.motionManager isAccelerometerAvailable]) {
        [self.motionManager startAccelerometerUpdatesToQueue:[NSOperationQueue mainQueue] withHandler:^(CMAccelerometerData *accelerometerData, NSError *error) {
            double x = accelerometerData.acceleration.x;
            double y = accelerometerData.acceleration.y;
            double z = accelerometerData.acceleration.z;

            self.xAxis.text = [NSString stringWithFormat:@"%.2f", x];
            self.yAxis.text = [NSString stringWithFormat:@"%.2f", y];
            self.zAxis.text = [NSString stringWithFormat:@"%.2f", z];

            if (x > 0.5) {
                self.xAxis.textColor = [UIColor redColor];
            } else {
                self.xAxis.textColor = [UIColor blackColor];
            }
        }]; 
    } else {
        NSLog(@"Accelerometer is not available.");
    }
}

每当x值超过0.5时,这将为xAxis标签着色,并在小于0.5时将其返回黑色。

其他一些注意事项:

•您可以直接在主队列上获取加速度计更新,而不是调用dispatch_async(dispatch_get_main_queue(), …。对于这里发生的事情,可以完全在主线程上执行。

•只拨打一次[super viewDidLoad]电话。 UIViewController或您正在进行子类化的任何UIViewController子类可能不会期望多次调用viewDidLoad,从而导致未定义的行为。