问题标签 [fast-enumeration]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
355 浏览

ios - 如何在 ARC 下的 countByEnumeratingWithState 中安全地存储额外的对象?

如何安全地将几个对象实例存储在NSFastEnumerationState的额外数组中?

我希望在循环运行时保留这些项目,然后在循环完成时释放。

这是NSFastEnumerationState来自 Apple 标头的 的定义:

0 投票
4 回答
2693 浏览

objective-c - 在 NSMutableArray 崩溃中删除项目的快速枚举

我有一个奇怪的问题,如果我在 forin 枚举中删除我的项目,它会崩溃,所以像这样:

如果我将代码更改为

这会很完美,有人能告诉我为什么吗?

0 投票
3 回答
441 浏览

iphone - NSMutableArray 快速枚举问题

新手 obj-c 问题。

我有一个带有四个自定义单元格的自定义表格视图。每个单元格中都有一个用于客户信息的可编辑文本字段。我需要通过输入附件视图改进文本字段之间的切换。 http://uaimage.com/image/62f08045

我创建了一个容量为 4 的 NSMutableArray。我标记了文本字段并将它们添加到文本字段委托方法中的此数组中:

现在我尝试改进按钮“下一步”的功能:

但是这段代码不起作用。我认为使用快速枚举存在问题?

有人可以帮忙吗?谢谢,亚历克斯。


从 c-had 解决的一些想法:

  1. 为什么要在 textFieldShouldReturn: 中设置 textFieldsArray?这不应该在初始化完成的地方(例如视图控制器的viewDidLoad)完成吗?问题可能是您的阵列从未实际设置,或者只是部分设置。此外,将设置放在这里意味着它将被一遍又一遍地调用,每次都会改变你的数组并将事情搞砸。
  2. 你的标签少了一个。您应该从 0 开始分配它们,而不是 1(或考虑 inputAccessoryViewDidSelectNext 的差异:)。如果您的代码正常工作,它将跳过 2 个文本字段,因为第一个字段将返回标签 1,您将跳到 objectAtIndex:2,这是第三个字段。
  3. 你不考虑结束。如果您在最后一个字段,递增将不会回到开头。

我实际上建议根本不使用标签。相反,在设置时,只需遍历字段,将它们添加到您的数组中。然后,在 inputAccessoryViewDidSelectNext: 中,使用计数器而不是快速枚举来确定您的位置。

0 投票
3 回答
1924 浏览

cocoa - NSDictionary 持有 NSDictionary 对象的快速枚举

我有NSDictionary四个对象。每个对象都是一个NSDictionary包含数千个对象的对象。我已经通过记录顶级字典的描述来验证它包含它应该包含的内容。但是,当我运行下面的代码以枚举该顶级字典中的对象时,调试器显示错误,表明返回的对象是一个字符串而不是字典。

这是代码:

(我最初输入synsetsForPosNSDictionary,但这里描述的结果是一样的。)

在调试器中,我在日志语句处暂停以在控制台中获取此信息:

然后,让日志语句执行,我得到这个:

后跟此错误消息:

我不明白这里发生了什么,为什么在快速枚举代码中没有将其视为字典。

0 投票
1 回答
1874 浏览

ios - 如何在不知道索引的情况下检查 NSMutableArray 中是否存在对象,如果存在则在 iOS 中替换它?

我有一个NSMutableArray包含 Person 类型的对象。Person 对象包含NSString*name、NSString*dateStamp 和NSString*testScore 参数。我想使用快速枚举做的是检查NSMutableArray*testResults,看看是否存在具有相同名称参数的对象。

如果是这样,那么我想将 , 中的现有对象替换为NSMutableArray我将要插入的对象,该对象将具有最新的dateStamp, 和 testScore 值。如果找到没有匹配名称参数的对象,则只需插入我拥有的对象。

到目前为止,我的代码如下所示:

这是创建我要插入的对象的代码:

这是我尝试遍历 NSMutableArray 以查看是否已存在具有相同名称参数的对象的代码:

这不是一个非常复杂的问题,但我很困惑如何寻找匹配项,然后在不知道对象所在索引的情况下替换实际对象。

0 投票
2 回答
326 浏览

objective-c - 尝试通过快速枚举 NSMutableArray 将 UILabel 动态添加到视图

我有一个包含 Person 类型对象的 NSMutableArray。Person 对象包含 NSString *name、NSString *dateStamp 和 NSString *testScore 的参数。我想使用快速枚举做的是将每个对象的参数显示为视图中的一行上的 UILabel,每个对象都显示在每一行上。

问题是 NSMutableArray 可能包含任意数量的对象,因此视图上可能有一两行标签,或者视图上有几行。我想创建一个 for 循环,该循环将动态填充视图中的每个对象在一行上(并且始终保持间距),并允许用户向下滚动以查看任何更向下且最初无法在屏幕上看到的行.

我的 for 循环如下所示:

我需要做的是动态调整 CGRectMake 字段中的“y”值,以便每个对象在 NSMutableArray 迭代时依次向下移动到另一行,这样用户可以向下滚动以进一步查看其他行,如果必要的。滚动功能是自动添加的吗?

0 投票
4 回答
206 浏览

ios - iOS快速枚举时需要修改一个预加载数据的NSMutableArray

我有一个包含对象列表的 NSMutableArray。我想要做的是遍历这个对象列表,并为我要插入的对象找到匹配的对象。一旦找到匹配的对象,我就想简单地用我要插入的对象替换当前列表中的对象。我正在尝试使用快速枚举来做到这一点:

不幸的是,当我运行上面的代码时,我收到以下错误:

谁能看到我做错了什么,如何解决这个问题,同时实现我上面描述的功能?

0 投票
1 回答
151 浏览

ios - 在 iOS 中使用 NSString 参数迭代 NSMutableArray 对象后,需要生成一个 JSON 文档上传到服务器

我有一个包含对象集合的 NSMutableArray,每个对象都有 NSString 类型的三个参数。我需要做的是遍历这个集合,并创建一个包含两个小节的 JSON 文档:一个称为“测试结果”,另一个称为“报告”。NSMutable 数组中的每个对象都有三个 NSString 参数,其中一个参数称为“testResult”。

如果“testResult”的值为“pass”或“fail”,则该对象需要进入“Test Result”部分。如果参数的值为“na”,则对象进入“报告”部分。“测试结果”部分应包含三个“元素”:“名称”、“日期”、“测试结果”。“报告”部分只需包含两个元素:“名称”和“日期”。我的问题不是如何使用 for 循环遍历 NSMutableArray,我的问题是如何遍历 NSMutableArray,并构造一个 JSON 文档,如上所述。

我的代码将类似于:

0 投票
2 回答
608 浏览

ios - 需要生成的 JSON 文档与在 iOS 中的 NSMutableDictionary 中插入的对象的顺序相同

我正在从一个 NSMutableDictionary 生成一个 JSON 文档,该文档由指向 NSStrings 的键以及依次指向其他 NSMutableDictionary 的两个键组成。我的问题是,当我输出 JSON 文档时,我注意到 JSON 文档具有我以不同顺序插入到 NSMutableDictionary 中的对象。例如,我目前的输出如下所示:

但我希望输出看起来像这样:

我拥有的用于创建 JSON 文档的代码如下所示:

我的另一个担心是 test_results 的输出也没有按照我想要的顺序出现。它们按“日期”、“名称”、“结果”的顺序出现,我希望输出为“名称”、“日期”、“结果”。有没有办法我也可以纠正这个订单?

0 投票
2 回答
612 浏览

ios - 快速枚举并将对象添加到 NSMutableArray

我正在尝试将对象添加到NSMutableArray "allItems1"

[[PMGWineStore sharedStore]allItems]NSLog由 15 个对象组成,这些对象在第一个语句中完美打印。但[allItems1 count]显示为 0。我做错了什么?