Ios 已将无法识别的选择器发送到实例Objective-C
我收到错误信息: 由于未捕获异常而终止应用程序 “NSInvalidArgumentException”,原因:'-[\uu NSCFConstantString subjectType]:发送到实例的选择器无法识别 我正在尝试将我的应用程序中的学生按他们正在学习的科目类型进行排序Ios 已将无法识别的选择器发送到实例Objective-C,ios,objective-c,arrays,bitwise-operators,Ios,Objective C,Arrays,Bitwise Operators,我收到错误信息: 由于未捕获异常而终止应用程序 “NSInvalidArgumentException”,原因:'-[\uu NSCFConstantString subjectType]:发送到实例的选择器无法识别 我正在尝试将我的应用程序中的学生按他们正在学习的科目类型进行排序 AMStudent* student = [[AMStudent alloc] init]; NSMutableArray* studentArray = [[NSMutableArray alloc] init]
AMStudent* student = [[AMStudent alloc] init];
NSMutableArray* studentArray = [[NSMutableArray alloc] init];
NSArray* studentNameArray = [NSArray arrayWithObjects: @"Student1", @"Student2", @"Student3", @"Student4", @"Student5", @"Student6", @"Student7", @"Student8", @"Student9", @"Student10", nil];
[studentArray addObjectsFromArray:studentNameArray];
for (NSInteger i = 0; i < [studentNameArray count]; i++) {
student.name = [studentNameArray objectAtIndex: i];
[student randomAnswer];
NSLog(@"%@", student.description);
}
NSMutableArray* techArray = [NSMutableArray array];
NSMutableArray* humArray = [NSMutableArray array];
for (AMStudent* stud in studentArray){
if ((stud.subjectType & AMStudentSubjectTypeDevelopment) | (stud.subjectType & AMStudentSubjectTypeMath)) {
[techArray addObject:stud];
} else {
[humArray addObject:stud];
}
}
你在打电话吗
stud.subjectType
将StudentName(NSString)复制到student数组后,在studentArray中:
[studentArray addObjectsFromArray:studentNameArray];
NSString无法识别subjectType。您正在呼叫
stud.subjectType
将StudentName(NSString)复制到student数组后,在studentArray中:
[studentArray addObjectsFromArray:studentNameArray];
NSString无法识别subjectType。techArray和humArray(NSArray)类型更改无法工作添加对象函数
NSMutableArray *newtechArray = [techArray mutableCopy];
NSMutableArray *newhumArray = [humarray mutableCopy];
if ((stud.subjectType & AMStudentSubjectTypeDevelopment) | (stud.subjectType & AMStudentSubjectTypeMath)) {
[newtechArray addObject:stud];
} else {
[newhumArray addObject:stud];
}
techArray和humArray(NSArray)类型更改不工作添加对象函数
NSMutableArray *newtechArray = [techArray mutableCopy];
NSMutableArray *newhumArray = [humarray mutableCopy];
if ((stud.subjectType & AMStudentSubjectTypeDevelopment) | (stud.subjectType & AMStudentSubjectTypeMath)) {
[newtechArray addObject:stud];
} else {
[newhumArray addObject:stud];
}
您可以使用以下方式填写
studentArray
:
[studentArray addObjectsFromArray:studentNameArray];
因此studentArray
包含NSString
实例。然后尝试使用以下方法处理阵列:
for (AMStudent* stud in studentArray){
这不会将studentArray
中的NSString
实例神奇地转换为AMStudent
实例。此时不会出现错误,因为studentArray
可以包含任何类型的对象,因此编译器只相信您知道自己在做什么,并将对NSString
的引用放入stud
中。然后你要:
if ((stud.subjectType ...
这需要stud
引用一个AMStudent
对象,而它没有引用,它引用一个(常量)字符串,因此您会得到错误:
NSInvalidArgumentException',原因:'-[\uu NSCFConstantStringsubjectType]:发送到实例的选择器无法识别
您需要创建AMStudent
的实例并将其添加到数组中,而不是将学生的姓名复制到studentArray
中。你打算在第一个循环中这样做吗
HTH您可以使用以下方式填写
学生阵列
:
[studentArray addObjectsFromArray:studentNameArray];
因此studentArray
包含NSString
实例。然后尝试使用以下方法处理阵列:
for (AMStudent* stud in studentArray){
这不会将studentArray
中的NSString
实例神奇地转换为AMStudent
实例。此时不会出现错误,因为studentArray
可以包含任何类型的对象,因此编译器只相信您知道自己在做什么,并将对NSString
的引用放入stud
中。然后你要:
if ((stud.subjectType ...
这需要stud
引用一个AMStudent
对象,而它没有引用,它引用一个(常量)字符串,因此您会得到错误:
NSInvalidArgumentException',原因:'-[\uu NSCFConstantStringsubjectType]:发送到实例的选择器无法识别
您需要创建AMStudent
的实例并将其添加到数组中,而不是将学生的姓名复制到studentArray
中。你打算在第一个循环中这样做吗
HTH非常感谢你的广泛回答,我理解我的错误。刚刚又添加了一个循环,并添加了对象student
for (NSInteger numberOfStudents = 0; numberOfStudents < 10; numberOfStudents ++){
AMStudent* student = [[AMStudent alloc] init];
student.name = [studentNameArray objectAtIndex:numberOfStudents];
}
[studentArray addObject:student];
for(NSInteger numberOfStudents=0;numberOfStudents<10;numberOfStudents++){
AMStudent*student=[[AMStudent alloc]init];
student.name=[studentNameArray objectAtIndex:numberOfStudents];
}
[学生阵列添加对象:学生];
非常感谢您的广泛回答,我理解我的错误。刚刚又添加了一个循环,并添加了对象student
for (NSInteger numberOfStudents = 0; numberOfStudents < 10; numberOfStudents ++){
AMStudent* student = [[AMStudent alloc] init];
student.name = [studentNameArray objectAtIndex:numberOfStudents];
}
[studentArray addObject:student];
for(NSInteger numberOfStudents=0;numberOfStudents<10;numberOfStudents++){
AMStudent*student=[[AMStudent alloc]init];
student.name=[studentNameArray objectAtIndex:numberOfStudents];
}
[学生阵列添加对象:学生];
什么是异常消息?它将告诉您类是什么以及发送的选择器是什么。添加详细崩溃日志可能重复。如果对象为nil,您将获得此崩溃。是你是对象不是nil@gurmandeep您可以在objective c中将任何选择器发送到nil
,它不会崩溃;它只返回nil。异常消息是什么?它将告诉您类是什么以及发送的选择器是什么。添加详细崩溃日志可能重复。如果对象为nil,您将获得此崩溃。是你是对象不是nil@gurmandeep您可以在objective c中将任何选择器发送到nil
,它不会崩溃;它只返回零。非常感谢你的宽泛回答,我理解我的错误:非常感谢你的宽泛回答,我理解我的错误: