gpt4 book ai didi

cocoa - 从数组生成 objectForKey

转载 作者:行者123 更新时间:2023-12-03 17:44:57 25 4
gpt4 key购买 nike

当我使用此代码从名为“fileList”的文件名数组中获取字符串时,我取得了成功:

cell.timeBeganLabel.text = [[[self.fileList objectAtIndex:[indexPath row]] lastPathComponent] stringByDeletingPathExtension];

所以我希望相同的代码能够生成相同的字符串作为我的 key :

NSDictionary *stats = [thisRecordingsStats objectForKey:[[[self.fileList objectAtIndex:[indexPath row]] lastPathComponent] stringByDeletingPathExtension]];
cell.durationLabel.text = [stats objectForKey:@"duration"];

或者这个:

NSDictionary *stats = [thisRecordingsStats objectForKey:@"%@",[[[self.fileList objectAtIndex:[indexPath row]] lastPathComponent] stringByDeletingPathExtension]];

两者都构建没有错误,日志显示我的数据在那里:但我得到一个空白的 UILabel。
我没有正确编写动态 key 生成器吗?

最佳答案

I'm having success when I use this code to get a string from an array of file names called "fileList":

cell.timeBeganLabel.text = [[[self.fileList objectAtIndex:[indexPath row]] lastPathComponent] stringByDeletingPathExtension];

那么,该消息表达式的结果就是您的 key ,对吧?

也就是说,你的字典中的键是不带扩展名的文件名?

so I expected the same code to generate the same string as a key for me in this:

NSDictionary *stats = [thisRecordingsStats objectForKey:[[[self.fileList objectAtIndex:[indexPath row]] lastPathComponent] stringByDeletingPathExtension]];
cell.durationLabel.text = [stats objectForKey:@"duration"];
  1. 您像以前一样计算不带扩展名的文件名。
  2. 您在 thisRecordingsStats 字典中查找该字符串的对象,从而获得另一个字典,并用它初始化 stats 变量。
  3. 您在 stats 字典中查找“duration”键的对象,并将 durationLabeltext 设置为此对象.

or this:

NSDictionary *stats = [thisRecordingsStats objectForKey:@"%@",[[[self.fileList objectAtIndex:[indexPath row]] lastPathComponent] stringByDeletingPathExtension]];

添加 @"%@", 部分没有意义,因为 objectForKey: 不采用格式字符串。比较 the documentation for NSString's stringWithFormat: methodthe documentation for NSDictionary's objectForKey: method .

该代码“有效”,因为您作为参数传递给 objectForKey: 的是一个逗号表达式。 C 的逗号运算符计算两边并计算右边。然而,在这种情况下,和大多数其他情况一样,它没有增加任何东西。由于这样的原因,逗号运算符很少被使用,甚至更很少被故意使用。

剪掉@"%@",部分。

回到问题:

Both build without error, and the log shows my data is there: but I'm getting a blank UILabel.

好吧,你说从 fileList 数组中的字符串生成的 key 显示在 UILabel 中,所以问题是以下之一:

  • thisRecordingStatsnil
  • thisRecordingStats 不包含您从 self.fileList 中的字符串生成的 key 的对象。
  • thisRecordingStats 确实包含您根据 self.fileList 中的字符串生成的键的对象,并且它是一个字典,但它不包含关键“持续时间”。
  • thisRecordingStats 确实包含您从 self.fileList 中的字符串生成的键的对象,它是一个字典,并且包含键“的值”持续时间”,但该值是一个空(零长度)字符串。

您还应该检查调试器控制台是否有提示其他问题的消息。例如,“不响应选择器”消息可能是因为 thisRecordingStats 包含您从 self.fileList 中的字符串生成的键的对象,但它不是一本字典。

最后,我建议构建一个或多个 model object类而不是像这样的嵌套字典。它往往会使代码更容易阅读和调试。特别是,表面上具有关键“持续时间”对象的字典应该是模型对象。

关于cocoa - 从数组生成 objectForKey,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2709896/

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