1

我是 Objective C 的新手,我似乎无法找到如何做到这一点(如果可能的话)。

我有一张NSArray装满 4 张卡片(卡片 = 我自己的班级),我想将标签的文本设置为NSString我的卡片对象持有的。

在 Java 中,我会做这样的事情:如果我有一个有 4 张卡片的卡片数组,而 theLabel 是一个字符串。

theLabel = deck[2].getLabel();

这似乎不适用于Objective C。到目前为止,我在Objective C中的代码:

- (IBAction)nextCard:(id)sender {
    theLabel.text = [deck objectAtIndex:j].getLabel;
    theImage.image = [deck objectAtIndex:j].getImage;
}

每次我点击 iPhone 上的按钮时,nextCard 都会调用。j 是一个普通的 int,它将跟踪显示哪张卡片。

当我创建数组时,它看起来像这样:

- (void)viewDidLoad
{
    [super viewDidLoad];

    ah = [[Card alloc]init];
    [ah setLabel:@"label1"];
    [ah setCardImage: [UIImage imageNamed:@"3.png" ]];

    as = [[Card alloc]init];
    [as setLabel:@"label2"];
    [as setCardImage: [UIImage imageNamed:@"2.png" ]];

    ac = [[Card alloc]init];
    [ac setLabel:@"labbel3"];
    [ac setCardImage: [UIImage imageNamed:@"1.png" ]];

    ad = [[Card alloc]init];
    [ad setLabel:@"label4"];
    [ad setCardImage: [UIImage imageNamed:@"4.png" ]];

    deck = [NSMutableArray arrayWithCapacity:25];
    [deck addObject:ah];
    [deck addObject:as];
    [deck addObject:ac];
    [deck addObject:ad];
}

所以我基本上希望能够使用方法 ob 对象存储在 NSArray 中。

非常感谢您的回答,在此先感谢!

4

3 回答 3

1

在 Objective-C 中,生成的 getter 没有 get 前缀,所以你可以这样使用它:

theLabel = deck[2].label;

或者:

theLabel= [deck[2] label];
于 2013-01-11T14:48:35.343 回答
0

检查这个:

[deck objectAtIndex:0].label;

或者:

[[deck objectAtIndex:0] label];

或者:

[[deck objectAtIndex:0] yourMethodWithParameter:@"foo"];
于 2013-01-11T14:46:12.300 回答
0

在 Objective-C 中,大多数情况下访问器方法是自动生成的。假设我们有一个名为“object”的属性 getter 方法不是这样命名的getObject,其中“object”是您要访问的属性。它只是由这样的属性名称命名object

所以在你的情况下,它应该是这样的:

NSString *theLabelString = [[deck objectAtIndex:j] label];
//or this:
NSString *theLabelString = [deck[j] label];
//or this:
NSString *theLabelString = deck[j].label;
于 2013-01-11T14:51:34.527 回答