2013-02-21 48 views
0

所以我的新节目,并已被困在这几天... 添加数据我有一个数组,如下所示从plist中从阵列

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com /DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<array> 
    <dict> 
    <key>question</key> 
    <string>2 + 2 = ?</string> 
    <key>A</key> 
    <string>2</string> 
    <key>B</key> 
    <string>7</string> 
    <key>C</key> 
    <string>3</string> 
</dict> 
<dict> 
    <key>question</key> 
    <string>2 + 3 = ?</string> 
    <key>A</key> 
    <string>5</string> 
    <key>B</key> 
    <string>2</string> 
    <key>C</key> 
    <string>6</string> 
</dict> 
</array> 
</plist> 

那么我想这些存储的数组每。然后,我在每个故事板上都有一个标签,并且要将每个键分配给不同的标签,但我似乎做错了。这里是我的代码

- (void)showNextQuestion 
{ 
    NSArray *rootArray = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"question" ofType:@"plist"]]; 
    int numItems = [rootArray count]; 
    currentQuestion = -1; 
    currentQuestion++; 

    NSMutableArray *question = [NSMutableArray arrayWithCapacity:numItems]; 
    NSMutableArray *A = [NSMutableArray arrayWithCapacity:numItems]; 
    NSMutableArray *B = [NSMutableArray arrayWithCapacity:numItems]; 
    NSMutableArray *C = [NSMutableArray arrayWithCapacity:numItems]; 

    for (NSDictionary *itemData in rootArray) { 
     [question addObject:[itemData objectForKey:@"question"]]; 
     [A addObject:[itemData objectForKey:@"A"]]; 
     [B addObject:[itemData objectForKey:@"B"]]; 
     [C addObject:[itemData objectForKey:@"C"]]; 

     self.questionasked.text =question; 
     self.answer1.text = A; 
     self.answer2.text = B; 
     self.answer3.text = C; 
    } 
} 

4个标签questionsasked,ANSWER1,ANSWER2,ANSWER3 ......如何正确

+1

您似乎将一个NSMutableArray分配给标签的文本字段。由于您有多个问题,因此您需要指定您想在“self.?????.text =?;'行 – 2013-02-21 21:22:00

+0

嘿david中显示的问题的索引。感谢您的帮助,我想要做的是采取数组中的任何事情,说出问题并将其放在问号标签中......这是否有道理? – Sfocker 2013-02-21 21:26:38

+0

可以理解,但是您只有一组标签和多个问题,并且您正在分配for语句中的标签,因此您也覆盖了分配。你的意思是把问题放在表格视图或其他什么地方,然后在选择问题的按钮中显示可能的答案?你想达到什么目的? – 2013-02-21 21:29:36

回答

0

分配给它最起码,你应该从删除的赋值,循环和重写如:

self.questionasked.text =question[currentQuestion]; 
    self.answer1.text = A[currentQuestion]; 
    self.answer2.text = B[currentQuestion]; 
    self.answer3.text = C[currentQuestion]; 

我也建议你只加载文件一次(而不是在每一个showNextQuestion调用)

而且,你的设置只会告诉你第一个问题,无论你多少次打电话。将此语句移到构造函数或某个只会执行一次的地方。

+0

什么方法我应该把它放在大卫,对不起,因为我说我是新的所有这一切......相当不确定 – Sfocker 2013-02-21 21:43:27

+0

要么你的构造函数,或者你的viewDidLoad – 2013-02-21 21:49:05

+0

好吧大卫我已经这样做了......我想通过获取问题解决了,我可以向你发送我的一些修改后的代码,因为我限于这里的空间 – Sfocker 2013-02-21 21:51:19