【问题标题】:How to reach the elements of an object array如何到达对象数组的元素
【发布时间】:2012-08-15 14:18:45
【问题描述】:

我的应用中有一个对象数组。

NSMutableArray *questions = [[NSMutableArray alloc] init];

[questions addObject:[self addQuestion:@"QUESTION 1" option1:@"ans1" option2:@"ans2" option3:@"ans3" option4:@"ans4" option5:@"ans5" answer:2]];

[questions addObject:[self addQuestion:@"QUESTION 2" option1:@"ans1" option2:@"ans2" option3:@"ans3" option4:@"ans4" option5:@"ans5" answer:2]];

在我看来,我有 6 个不同的标签。一个用于问题,另一个用于选项。但是,我不知道如何到达例如第一个对象的“选项 2”,以便我可以将其内容放入标签?

【问题讨论】:

  • 欢迎来到 Stack Overflow!为了让我们能够回答您的问题,您需要添加更多信息。现在没有足够的细节让任何人做更多的猜测:)

标签: objective-c ios arrays object arraylist


【解决方案1】:

使用 NSDictionary(或 NSMutableDictionary)!或者创建一个自定义类!有很多很好的方法可以有效和安全地解决这个问题,您需要权衡您的选择。除非您的方法的返回值确实是一个对象(例如 NSMutableDictionary),否则您现在拥有的肯定不会起作用。

如果你选择使用字典,你可以这样做

NSMutableDictionary *question = [[NSMutableDictionary alloc] initWithCapacity:7];
[question setObject:@"Ask a question" forKey:@"question"];
[question setObject:@"Option 1" forKey:@"1"];
[question setObject:@"Option 2" forKey:@"2"];
[question setObject:@"Option 3" forKey:@"3"];
[question setObject:@"Option 4" forKey:@"4"];
[question setObject:@"Option 5" forKey:@"5"];
[question setObject:@"2" forKey:@"Answer"];

//Keep in mind, the numbers in these dictionary entries are treated as strings

然后您可以将此字典添加到数组中:

[questions addObject:question];

要访问任何给定问题字典对象的正确答案,您可以调用:

NSString *answer = [question objectForKey:[question objectForKey:@"Answer"]];

..这将返回一个字符串:“选项 2。”

访问要放入标签的选项的文本:

NSString *option = [question objectForKey:@"2"];

..这也将返回一个字符串:“选项 2。”

希望这有帮助,很高兴详细说明。

【讨论】:

    【解决方案2】:
    someLabel2.text = [questions objectAtIndex:2];
    

    如果这不能回答您的问题(我以某种方式猜测:),那么请在您的问题中添加一些更相关的信息。

    【讨论】:

      【解决方案3】:
      // get the first object in the array
      
      id question = [questions objectAtIndex: 0];
      
      // TODO: use whatever accessor you have to get properties
      // NSString *message = ...
      
      // set label text
      label.text = message;
      

      如需更多帮助,请稍微澄清一下您的问题 :)

      【讨论】:

        【解决方案4】:

        这一切都取决于addQuestion:option1:option2:option3:option4:option5: 方法的工作原理。我想您有某种访问器方法来访问该方法返回的对象中的所有这些选项。如果您可以发布更多代码,这将有所帮助。此外,最好将问题数组作为实例变量,以便您可以从该类的其他方法访问它,也可能从类外部访问它,具体取决于您如何设置访问器方法。

        我想你的代码会像这样工作(同样,我不知道,因为你还没有发布你的完整源代码)。

        // this would be an instance of your class
        id someObject = [questions objectAtIndex:0];
        
        NSString *option1 = someObject.option1;
        NSString *option2 = someObject.option2;
        NSString *option3 = someObject.option3;
        NSString *option4 = someObject.option4;
        NSString *option5 = someObject.option5;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-12-26
          • 2020-11-19
          • 1970-01-01
          • 2019-05-02
          • 2011-10-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多