如何使用.notation在Objective-C中设置数组的值?

时间:2014-01-30 23:12:16

标签: objective-c arrays syntax

抱歉,我是Objective-C的新手,我还在弄清楚如何使用点表示法设置属性。我有3个文件如下...到最后(在主要),我已设置radius属性并记录它,但我不知道如何设置中心属性,因为它不是浮点数(如半径)这是一个阵列。我最初尝试过像 - ball.center = {12,14,16}不起作用。

我的班级.m文件是:

@implementation Sphere

-(void)setCenter:(NSArray *)center radius:(float)radius {
_center = center;
_radius = radius;

} @end

我的班级.h文件是:

@interface Sphere : NSObject

@property (nonatomic) float radius;
@property (nonatomic, strong) NSArray *center;

-(void)setCenter:(NSArray *)center radius:(float)radius;

@end

,我的主文件是:

int main(int argc, const char * argv[])
{

    @autoreleasepool {

        Sphere *ball = [[Sphere alloc] init];
        ball.radius = 34;
**// ball.center = an array, so how do we set that?**//

**//do I have to set the values of the array first?//** 

        NSLog(@"\nball radius %f\n", ball.radius);
**//I want to be able to log the values of the array the way I logged the radius.**

        }
    return 0;
}

1 个答案:

答案 0 :(得分:2)

我会回答你的问题“如何创建一个带数字的数组”,但看起来你根本不需要数组(阅读所有答案: - ))

首先需要初始化数组,例如:

NSArray *array = [NSArray arrayWithObjects:object1, object2, object3, nil];

还有一个文字可以让你用友好的synthax做同样的事情

NSArray *array = @[object1, object2, object3];

请注意,您只能在NSArray中插入对象而不是原语,因此您需要一些NSNumber(NSNumber是表示数字的对象)。

您可以使用类方法创建NSNumber

NSNumber *one = [NSNumber numberWithInt:1];

或文字合成器(通常因其简洁而优选)

NSNumber *one = @(1);

所以,这样的事情会做

NSArray *array = @[@(1), @(2), @(3)];

但是,我看到你想要代表中心,通常要做到这一点,你不使用一个对象数组,你使用的是CGPoint,它不是一个数组,它是一个包含1个点的结构(即X和Y),它代表中心是完美的!

所以代码看起来像:

@implementation Sphere

-(void)setCenter:(CGPoint)center radius:(float)radius {
    _center = center;
    _radius = radius;
}
@end

并使用它:

Sphere *ball = [[Sphere alloc] init];
ball.center = CGPointMake(10, 20);
NSLog(@"my ball center x:%d y:%d", ball.center.x, ball.center.y);