Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 已将无法识别的选择器发送到实例Objective-C_Ios_Objective C_Arrays_Bitwise Operators - Fatal编程技术网

Ios 已将无法识别的选择器发送到实例Objective-C

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]

我收到错误信息:

由于未捕获异常而终止应用程序 “NSInvalidArgumentException”,原因:'-[\uu NSCFConstantString subjectType]:发送到实例的选择器无法识别

我正在尝试将我的应用程序中的学生按他们正在学习的科目类型进行排序

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
,它不会崩溃;它只返回零。非常感谢你的宽泛回答,我理解我的错误:非常感谢你的宽泛回答,我理解我的错误: