gpt4 book ai didi

iphone - 如何设置 NSArray 中对象的属性

转载 作者:行者123 更新时间:2023-12-03 16:49:25 24 4
gpt4 key购买 nike

我编写了一个具有属性的类,我想将此类的实例添加到可变数组中,然后我想设置实例的 num 属性。但我不知道正确的语法。请告诉我执行此操作的正确语法或方法。

@interface ClassA : NSObject

@property int num;

-(void) method;
+(id) getClassAObj:(int)number;

@end
--------------------------------
#import "ClassA.h"

@implementation ClassA

@synthesize num;

-(void) method{
NSLog(@"ClassA method Called");
}
+(id) getClassAObj:(int)number {

ClassA *obj = [[ClassA alloc] init];
obj.num = number;
return obj;

}

@end
-----------------------

现在在 main 中我想手动设置 num 属性,但我不知道正确的语法是什么

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

@autoreleasepool {

// insert code here...
NSLog(@"Hello, World!");

NSMutableArray *array = [NSMutableArray arrayWithObjects:
[ClassA getClassAObj:9],
[ClassA getClassAObj:4], nil];
NSLog(@"%i",[[array objectAtIndex:0] num]);
NSLog(@"%i",[array[1] num]);
//array[1].num = 3; <--- Help needed here
//[[array[1]]num 3]; <--- this is also not correct syntax

NSLog(@"%i",[array[1] num]);

}
return 0;
}

我不知道我的语法是否错误,或者可能无法在数组内设置对象的属性

最佳答案

给你:

ClassA *anObject = array[<index>];
[anObject setNum:<yourNumber>];

您还可以使用[<array> objectAtIndex:<index>]方法,但上面是较新的方法。

祝你好运!

编辑:

如果您想验证对象(这样它就不会崩溃,但也不会按预期工作),您的代码可以如下所示:

id anObject = array[<index>];
if ([anObject isKindOfClass:[NSClassFromString(@"ClassA")]]) {
[(ClassA *)anObject setNum:<number>];
}

如果您想验证确切的消息(在本例中为 setter),您应该检查对象是否响应此选择器。当您拥有不同类的对象但它们都响应消息时,这非常有用。它看起来像这样:

id anObject = array[<index>];
if ([anObject respondsToSelector:@selector(setNum:)) {
[anObject setNum:<number>];
}

关于iphone - 如何设置 NSArray 中对象的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17137096/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com