【问题标题】:Unable to get NSEnumerator to display next item in my array无法让 NSEnumerator 显示我的数组中的下一项
【发布时间】:2011-11-26 08:02:11
【问题描述】:

我是 Objective-C 的新手,我已经在网上研究了好几个星期。几乎每个站点上的每个示例都是相同的,并没有让我完全清楚如何将它集成到我的 Xcode 4 应用程序代码中。

随处可见的例子是:

NSEnumerator* theEnum = [some_array objectEnumerator]; id obj; or id some_object = NULL; while(obj = [theEnum nextObject]) { //do something...

我想如果我更好地理解什么 id some_object = NULL;/ id obj;表示我可以自己解决。

在我的代码中,我有三个数组。每次用户单击“下一步”按钮时,我希望能够在 UILabel 字段中的每个数组中显示一个对象,直到所有对象都显示出来。

NSArray1 = 1,2,3

NSArray2 = 约翰、吉尔、乔什 NSArray3 = 男孩、女孩、男孩

按下下一个按钮时,您会看到 1,John 和男孩。下次你会看到 2,Jill 和女孩,最后是 3,Josh 和男孩。

以下是基本示例,不是我的实际代码。

number = [[NSArray alloc] initWithObjects:@"1",@"2",@"3", nil];
name = [[NSArray alloc] initWithObjects:@"John",@"Jill",@"Josh", nil];
gender = [[NSArray alloc] initWithObjects:@"boy",@"girl",@"boy", nil];

NSEnumerator *enum = [number objectEnumerator];
id obj; (??What is this?? And how to connect to the statement below??)

while ((obj = [enumNumber nextObject])) {

self.numberItem.text = ??
self.nameItem.text = ??
self.genderItem.text = ??

谢谢

【问题讨论】:

    标签: xcode4 nsarray nsenumerator


    【解决方案1】:

    id obj 只是包含您正在查看的当前变量的变量。在这段代码中,由于您的NSArrays 都包含字符串,因此您可以改用NSString *obj

    枚举器一次只能枚举一个集合。如果您想同时循环所有三个,请使用传统的for 循环:

    for(unsigned int i = 0; i < number.count; i++) {
        self.numberItem.text = [number objectAtIndex:i];
        self.nameItem.text = [name objectAtIndex:i];
        self.genderItem.text = [gender objectAtIndex:i];
    }
    

    【讨论】:

    • 感谢您解释枚举器并提供循环示例。当我在我的应用程序中单击下一步时,它会从第一个对象 (1) 跳转到所有三个数组的最后一个对象 (10) 并跳过 2-9。我现在正在努力。
    • 如上所示的for循环将遍历整个数组而不等待输入。如果要在每次单击按钮时递增 1,则需要将数组中的当前位置设为实例变量,然后在每次单击按钮时将其递增 1。您不需要循环来执行此操作。
    • 再次感谢。我能够按照您的建议使用实例变量。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-10
    • 2014-12-19
    • 1970-01-01
    • 2018-10-11
    • 1970-01-01
    • 2020-12-20
    • 1970-01-01
    相关资源
    最近更新 更多