gpt4 book ai didi

NSMutableDictionary setObject :forKey: fails to add key

转载 作者:行者123 更新时间:2023-12-02 22:34:20 26 4
gpt4 key购买 nike

我确定我正在尝试编写的一个小型 iPhone 程序中遗漏了一些东西,但是代码很简单并且编译没有任何错误,所以我看不出错误在哪里。

我设置了一个 NSMutableDictionary 来存储学生的属性,每个属性都有一个唯一的键。在头文件中,我声明了 NSMutableDictonary studentStore:

@interface School : NSObject
{
@private
NSMutableDictionary* studentStore;
}

@property (nonatomic, retain) NSMutableDictionary *studentStore;

当然在实现文件中:

@implementation School
@synthesize studentStore;

我想在字典中添加一个对象:

- (BOOL)addStudent:(Student *)newStudent
{
NSLog(@"adding new student");
[studentStore setObject:newStudent forKey:newStudent.adminNo];
return YES;
}

学生类具有以下属性: @interface 学生:NSObject { @私有(private)的 NSString* 名称;//属性 NSString* 性别; 年龄; NSString* adminNo;

其中 newStudent 具有以下值: Student *newStudent = [[Student alloc] initWithName:@"jane"gender:@"female"age:16 adminNo:@"123"];

但是当我查字典的时候:

- (void)printStudents
{
Student *student;
for (NSString* key in studentStore)
{
student = [studentStore objectForKey:key];
NSLog(@" Admin No: %@", student.adminNo);
NSLog(@" Name: %@", student.name);
NSLog(@"Gender: %@", student.gender);
}
NSLog(@"printStudents failed");
}

无法打印表中的值。相反,它会打印“printStudents failed”这一行。

我想这很基础,但由于我是 iOS 编程的新手,所以我有点难过。任何帮助将不胜感激。谢谢。

最佳答案

您的 studentStore 实例变量是一个指向 NSMutableDictionary指针。默认情况下,它指向 nil,这意味着它不指向任何对象。您需要将其设置为指向 NSMutableDictionary 的实例。

- (BOOL)addStudent:(Student *)newStudent
{
NSLog(@"adding new student");
if (studentStore == nil) {
studentStore = [[NSMutableDictionary alloc] init];
}
[studentStore setObject:newStudent forKey:newStudent.adminNo];
return YES;
}

关于NSMutableDictionary setObject :forKey: fails to add key,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11681621/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com