NSMutableDictionary setObject:forKey: 无法添加密钥

2023-11-30

我确信我在尝试编写的一个小型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;
}

Student 类具有以下属性: @interface学生:NSObject { @私人的 NSString* 名称; //属性 NSString* 性别; 年龄; NSString* 管理员号; }

其中 newStudent 具有以下值: Student *newStudent = [[Student alloc] initWithName:@"jane" 性别:@"女" 年龄: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 编程新手,所以我有点困惑。任何帮助将不胜感激。谢谢。


Your studentStore实例变量是一个pointer to an 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;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NSMutableDictionary setObject:forKey: 无法添加密钥 的相关文章

随机推荐

  • 任务不等待ContinueWith完成

    我有控制台应用程序和代码如下 我的问题是在ContinueWith任务完成之前 控制台应用程序结束 它不等待ContinueWith完成 请告知 请让我知道我遗漏或不正确的内容 var task1 Task
  • 获取字符码值大于十六进制“FFFF”的 Unicode 字符

    Issue The ChrWcharcode 参数是Long标识一个字符 但不允许值大于 65535 十六进制值 HFFFF see MS Help 例如各种符号和象形文字可以在以下位置找到Unicode 十六进制块 1F300 1F5FF
  • 如何使用 SSL 使我的网站有效?

    我有一个网站 位于具有专用 IP 的专用服务器上 并且安装了 SSL 证书 并且有效 当我访问我的网站并输入 https 而不是 http 时 我的网站仅部分加载 因为 google chrome 说我的网站有一些不安全的数据 我的网站尚未
  • 如何检测与预制件子项的碰撞

    我已经开始学习 Unity 并决定做一些练习 所以 我认为开发 Flappy Bird 作为一个实验会很棒 但我遇到了这个问题 您知道 当您在管道之间飞行时 您可以获得积分 为此 我制作了一个带有两个管道的预制件以及它们之间的一个空游戏对象
  • 使用 Jsoup 来 POST 登录数据

    我正在尝试登录这个网站 http deeproute com 这是我的代码 Connection Response res null Connection homeConnection null Document homePage null
  • 我可以搜索 Netbeans 的本地历史记录吗?

    在 Netbeans 项目中的一个文件的早期版本之一中 我编写了后来删除的代码 现在我想检索它 但是现在当我手动转到以前的版本时我找不到它 因为我在这个文件的本地历史记录中有很多版本 而且我不记得我到底什么时候编写了这段代码 有没有办法对此
  • Facebook 聊天机器人(PHP webhook)发送多个回复

    我的 Facebook 聊天机器人正在运行 但在我向它发送初始消息后 它会发回多条消息 这是我的 webhook 脚本 我很欣赏这是一个非常粗糙的工作示例 challenge REQUEST hub challenge verify tok
  • 这些结果类型存在“...”的重载:ClosedRange、CountableClosedRange

    Swift 2 let gap CGFloat randomInRange StackGapMinWidth maxGap 调用中缺少参数标签 范围 Swift 3 新错误 let gap CGFloat randomInRange ran
  • 拆分变量的第一个字母

    我需要从变量 name 中拆分第一个字母 我怎样才能做到呢 name userData name 我怎样才能得到第一封信 请检查是否正确 if userData gender male if firstletter i picture Im
  • MySQL 中的 BULK INSERT 问题

    我在执行批量插入时遇到以下 SQL 命令错误 BULK INSERT libra faculty FROM d faculty csv WITH FIELDTERMINATOR ROWTERMINATOR n 这是错误消息 ERROR 10
  • 我可以将文件添加到本地 Git 存储库但不将其推送到远程吗

    我有许多大型视频文件 我不想将其推送到远程 但我确实想将它们添加到本地存储库 有点像远程版本 gitignore file 那可能吗 更具体地说 我正在开发一个多媒体项目 一个文件夹包含项目元数据文件 它是一个 Screenflow 项目
  • ggplot 中的反向日期时间(POSIXct 数据)轴

    我正在尝试使用 ggplot 创建 POSIXct 时间图 并且想反转轴 但正在努力使其工作 我一直在使用scale y datetime 因为在我的实际应用程序中 控制该轴上的中断非常重要 这是我的问题的一个例子 首先是正常排序 然后是我
  • 获取 Android 设备的永久唯一 ID

    我有一个应用程序 我想在其中使用唯一 ID 来识别设备 我尝试了多种解决方案 但在手机重置后唯一 ID 发生了变化 如 ANDROID ID 我使用了下面的 StackOverflow 链接 但现在不可用 Android 设备有唯一的 ID
  • Matlab加载库错误

    我打算将OpenCV 1 1版本和Matlab2011一起使用 该程序使用调用来加载库 但是 它返回一个错误 gt In loadlibrary at 347 In Untitled at 4 Error using loadlibrary
  • 在 Java 中将二进制输入流读入单个字节数组

    文档说不应该使用available 确定尺寸的方法InputStream 我怎样才能阅读一篇文章的全部内容InputStream到字节数组中 InputStream in assuming already present byte data
  • ActionBarCompat 菜单项未显示[重复]

    这个问题在这里已经有答案了 这是我的general xml file menu menu
  • 在 ruby​​ on Rails 中提交表单时显示结果数据,无需刷新页面

    我对 ruby on Rails 很陌生 我遇到了一个问题 我有一个主题列表 在此列表下方有一个用于添加主题的表格 我正在尝试添加一个主题而不刷新页面 并将该主题显示在主题列表的正下方 新添加的主题正在插入数据库 但如果不刷新页面 它不会显
  • TypeScript 1.5:ES6 模块默认导入 CommonJS 'export ='(.d.ts 唯一问题?)[重复]

    这个问题在这里已经有答案了 我遇到了以下问题 import moment from moment moment本身是一个默认 CommonJS 导出的函数 如此处编码https github com borisyankov Definite
  • Chrome 在没有任何用户交互的情况下立即消除确认()提示

    我们网站的一些用户报告说confirm对话框出现 但立即消失 就好像它们被自动关闭一样 这似乎只影响 Chrome 而不影响其他浏览器 甚至 Chromium 搜索类似问题发现很多人都在抱怨confirm里面的对话onbeforeunloa
  • NSMutableDictionary setObject:forKey: 无法添加密钥

    我确信我在尝试编写的一个小型iPhone程序中遗漏了一些东西 但是代码很简单并且编译时没有任何错误 所以我无法看出错误在哪里 我设置了一个 NSMutableDictionary 来存储学生的属性 每个属性都有一个唯一的键 在头文件中 我声