我环顾四周寻找答案,因为它似乎很简单,但似乎找不到满满的东西。我正在尝试使用虚假数据测试我的程序。我创建了一个StudentData类,它拥有学生的属性,并且还有一个数组来保存它们。
当另一个类需要它们时,它们会调用getStudent方法(到目前为止这是该类的唯一公共部分)并发送一个ID号来获取该学生的名字。
我的问题是,我无法弄清楚如何解析学生数组以匹配学生的身份证号码和传入的号码。抱着同样的问题,我无法弄清楚如何从学生中取出名字对象要么。
到目前为止,这是我的代码:
// 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
我一直遇到的错误是: Expect']',错误指向“self.firstName”行。
如果我使用“[self.studentArray objectAtIndex:i] .firstName;”我收到错误:在'id'类型的对象上找不到属性'firstName'如果我将“firstName”设为属性(本地或公共),我甚至会收到此错误。这是有道理的,因为数组在技术上充满了'id'类型。我也知道,与java不同,我不能使用泛型或类似的东西。
非常感谢任何帮助,如果需要澄清,请告诉我!顺便说一句,这是一个ipod / ipad应用程序,如果这有用的话。
谢谢!
答案 0 :(得分:1)
两件事:
你这里有名字冲突。您有一个名为firstName的局部变量,传递给您的问题函数的参数具有相同的名称。
firstName
不是属性,除非您将其定义为一个属性。在这种情况下,它只是一个正常的局部变量。表示您无法使用self.firstName
访问它,只能使用firstName
。这就是编码指南说你应该用下划线命名局部变量的原因之一(正如你在studentArray
属性中所做的那样)。通过这种方式,您可以区分它是局部变量还是属性。
最佳,
弗洛