Objective c 无法从自定义类获取数据

Objective c 无法从自定义类获取数据,objective-c,ios,ipad,Objective C,Ios,Ipad,我四处寻找答案,因为它看起来很简单,但我似乎找不到足够的答案。我试图用假数据测试我的程序。我创建了一个StudentData类,它拥有一个student的属性,还拥有一个数组来保存所有属性 当另一个类需要它们时,它们调用getStudent方法(这是该类迄今为止唯一的公共部分),并发送ID号以获取该学生的姓名 我的问题是,我无法理解如何通过分析学生数组来匹配传入的学生ID号。同样的问题,我也不知道如何从student对象中提取名称 以下是我目前的代码: // StudentData.m #im

我四处寻找答案,因为它看起来很简单,但我似乎找不到足够的答案。我试图用假数据测试我的程序。我创建了一个StudentData类,它拥有一个student的属性,还拥有一个数组来保存所有属性

当另一个类需要它们时,它们调用getStudent方法(这是该类迄今为止唯一的公共部分),并发送ID号以获取该学生的姓名

我的问题是,我无法理解如何通过分析学生数组来匹配传入的学生ID号。同样的问题,我也不知道如何从student对象中提取名称

以下是我目前的代码:

// StudentData.m

#import "StudentData.h"

@interface StudentData() {
    NSString *ID;
    NSString *firstName;
}
@property (nonatomic, strong) NSMutableArray *studentArray;
@end

@implementation StudentData
@synthesize studentArray = _studentArray;

- (NSMutableArray *)studentArray {
    if(!_studentArray) _studentArray = [[NSMutableArray alloc] init];
    return _studentArray;
}

- (void)awakeFromNib {

    NSArray *idA = [NSArray arrayWithObjects:@"111", @"685", nil];
    NSArray *fnA = [NSArray arrayWithObjects:@"Mark", @"Sam", nil];

    for(int i = 0; i < idA.count; i++) {
        StudentData *tempCurrentStudent = [[StudentData alloc] init];
        ID = [idA objectAtIndex:i];
        firstName = [fnA objectAtIndex:i];

        [self.studentArray addObject:tempCurrentStudent];
    }
}

- (NSString *)getStudentsFirstName:(NSString *)studentID {
    NSString *firstName;

    for(int i = 0; i < self.studentArray.count; i++) {
        if([studentID isEqualToString:[[self.studentArray objectAtIndex:i] self.firstName]]) { // ERROR
            fN = [[self.studentArray objectAtIndex:i] self.firstName]; // ERROR
        }
    }

    return firstName;
}

@end
//StudentData.m
#导入“StudentData.h”
@接口StudentData(){
NSString*ID;
NSString*名字;
}
@属性(非原子,强)NSMutableArray*studentArray;
@结束
@实现StudentData
@综合学生阵列=_学生阵列;
-(NSMutableArray*)学生阵列{
如果(!\u studentArray)\u studentArray=[[NSMutableArray alloc]init];
返回学生宿舍;
}
-(无效)从NIB中唤醒{
NSArray*idA=[NSArray ARRAY WITH OBJECTS:@“111”,@“685”,nil];
NSArray*fnA=[NSArray ARRAY WITH OBJECTS:@“Mark”@“Sam”,nil];
for(int i=0;i
我经常遇到的错误是:期望']',错误指向“self.firstName”行

如果我使用“[self.studentArray objectAtIndex:I].firstName;”,我会得到错误:在类型为“id”的对象上找不到属性“firstName”如果我将“firstName”设为属性(本地或公共),我甚至会得到此错误。这是有意义的,因为从技术上讲,数组中填充了“id”类型。我还知道,与java不同,我不能使用泛型或类似的东西

任何帮助都将不胜感激,如果需要澄清,请让我知道!顺便说一句,这是针对ipod/ipad应用程序的,如果这有帮助的话

谢谢

有两件事:

  • 你的名字有冲突。您有一个名为firstName的局部变量,传递给问题函数的参数具有相同的名称

  • firstName
    不是属性,除非您将其定义为属性。在这种情况下,它只是一个正常的局部变量。这意味着您不能使用
    self.firstName
    访问它,而只能通过
    firstName
    访问它。这就是为什么编码准则要求您应该以下划线开头命名局部变量的原因之一(正如您已经在
    studentArray
    属性中所做的那样)。通过这种方式,您可以区分它是局部变量还是属性

  • 最好的

    弗洛