首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >第二次使用方法会给我一个错误(IOS)。

第二次使用方法会给我一个错误(IOS)。
EN

Stack Overflow用户
提问于 2016-02-26 18:18:45
回答 2查看 71关注 0票数 3

我在目标c (Xcode)中编写这个应用程序。

当我第一次使用一种方法时,一切都进行得很好,但是当我第二次使用它时,它会给我一个错误。

我试着调试它,错误出现在方法add家教,行if(tutor.userName isEqualToString:userName)

这是一个错误:

-__NSCFConstantString userName:未识别的选择器发送到实例0xad14c 2016-02-26 20:10:44.043项目1258:35474*终止应用程序由于未识别异常'NSInvalidArgumentException',原因:‘__NSCFConstantString userName:未识别的选择器发送到实例0xad14c’

这是我的密码:

代码语言:javascript
运行
复制
- (IBAction)addToFavorite:(id)sender {
    AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
    NSString * userName = delegate.delegateStr;
    Student * student = [[Model instance]getStudentByUserName:userName];
    [student addTutor:self.tutor.userName];

    UIStoryboard* sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    FavoritesTableViewController * ftvc = [sb instantiateViewControllerWithIdentifier:@"favoritesTableViewController"];
    ftvc.favTutors = student.favTutors;
    [[NSNotificationCenter defaultCenter] postNotificationName:@"RefreshTable" object:nil userInfo:nil];

}



-(void)addTutor:(NSString*)userName {
    BOOL check = YES;
    for (Tutor * tutor in self.favTutors) {
        if([tutor.userName isEqualToString:userName])
            check = NO;
    }
    if(check)
        [self.favTutors addObject:userName];
}

救命啊!!

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-26 18:28:07

这是失败的,因为您在favTutors数组中添加了favTutors,而不是Tutor的对象。因此,当您添加第一个对象,然后下次通过self.favTutors枚举时,实际上有一个字符串对象,它不会响应username属性。

票数 2
EN

Stack Overflow用户

发布于 2016-02-26 18:28:04

问题就在这里,我添加了评论。您正在向充满NSString对象的对象中添加一个Tutor。在这个方法的第二次调用中,在for循环中,家教实际上是一个NSString,您试图调用tutor.userName,并且它不存在于NSString对象中。

代码语言:javascript
运行
复制
-(void)addTutor:(NSString*)userName {
    BOOL check = YES;
    for (Tutor * tutor in self.favTutors) {
        if([tutor.userName isEqualToString:userName])
            check = NO;
    }
    if(check)
        [self.favTutors addObject:userName]; //problem here!!!!
}

我的建议是创建家教对象并将其添加到数组中。

代码语言:javascript
运行
复制
-(void)addTutor:(NSString*)userName {
    BOOL check = YES;
    for (Tutor * tutor in self.favTutors) {
        if([tutor.userName isEqualToString:userName])
            check = NO;
    }
    if(check)
    {
        // create Tutor object and add it to array dont add NSString directly
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35658935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档