2011-08-09 6 views
0

私は多肢選択テストアプリケーションを作成しようとしています。ヘルプグループ化インデックス(objectAtIndex 0 - 9)= 1インデックススポット

filePath = [[NSBundle mainBundle] pathForResource:@"testBank" ofType:@"txt"]; 
theBank = [[NSString alloc] initWithContentsOfFile:filePath 
                encoding:NSUTF8StringEncoding error:NULL];   
multipleChoicePractice = [theBank componentsSeparatedByString:@"\n"]; 

multipleChoicePractice NSMutableArrayのは、今、この順でNSStringsの束が含まれています:

Question 1 
choice A 
choice B 
choice C 
choice D 
Answer Key 
Rationale 
question ID 1 
[string to id type of question] 
[space 1] 
Question 2 
choice A-2 
etc etc up to Question 10 

私は10のグループに各インデックスグループにしようとしている私は、.txtファイルを読み取るために、このコードを持っていますしたがって、multipleChoicePracticeのインデックス0〜9は、新しい可変配列questionGroupAraryのインデックス0になります。私が試した:

for (i=0; i<=90; i = i+10) { //qArr being a NSMutableArray 
      [qArr addObject:[multipleChoicePractice objectAtIndex:i]]; 
      [qArr addObject:[multipleChoicePractice objectAtIndex:(i+1)]]; 
      [qArr addObject:[multipleChoicePractice objectAtIndex:(i+2)]]; 
      [qArr addObject:[multipleChoicePractice objectAtIndex:(i+3)]]; 
      [qArr addObject:[multipleChoicePractice objectAtIndex:(i+4)]]; 
      [qArr addObject:[multipleChoicePractice objectAtIndex:(i+5)]]; 
      [qArr addObject:[multipleChoicePractice objectAtIndex:(i+6)]]; 
      [qArr addObject:[multipleChoicePractice objectAtIndex:(i+7)]]; 
      [qArr addObject:[multipleChoicePractice objectAtIndex:(i+8)]]; 
      [qArr addObject:[multipleChoicePractice objectAtIndex:(i+9)]]; 

      [questionGroupArray addObject:qArr]; 
     } 

ループのそれの結果はquestionGroupArray objectAtIndexということである:0質問1と質問10 questionGroupArrayインデックス0は「question1」とを含むように私の目標を達成するための最良の方法は何ですか間のすべてが含まれてい"[スペース1]"?私はforループでこれを行う方法があるように感じるが、それは私をエスケープする。ありがとう!

答えて

1

連続する範囲内のオブジェクトの部分配列を取得する方がはるかに良い方法は、-[NSArray subarrayWithRange:]を使用することです。

// Source is your ungrouped array 
NSMutableArray* groups = [NSMutableArray array]; 
for (int i = ; i < 90; i += 10) { 
    NSArray* sub = [source subarrayWithRange:NSMakeRange(i, 10)]; 
    [groups addObject:sub]; 
} 
// groups is now an array of arrays with your groups. 
+0

この500万ポイントを与えるための方法があるのための2つを持っているのですか?そんなに魅力的に働いてくれてありがとう。おそらくこの日を費やしていたでしょう。 – JustAnotherCoder

+0

私が知っているわけではありません。しかし、もう一つの幸せなiOS開発者が私を幸せにしてくれます – PeyloW

0

各繰り返しでポインタqArrayの新しい配列を作成します。今度は同じ配列をquestionGroupArrayに複数回追加するだけです。

1

ループ内に配列を作成します。

for (i=0; i<=90; i = i+10) { //qArr being a NSMutableArray 

// Here you have to create a new array for every object 
      qArr = [NSMutableArray array]; 
      [qArr addObject:[multipleChoicePractice objectAtIndex:i]]; 
      [qArr addObject:[multipleChoicePractice objectAtIndex:(i+1)]]; 
      [qArr addObject:[multipleChoicePractice objectAtIndex:(i+2)]]; 
      [qArr addObject:[multipleChoicePractice objectAtIndex:(i+3)]]; 
      [qArr addObject:[multipleChoicePractice objectAtIndex:(i+4)]]; 
      [qArr addObject:[multipleChoicePractice objectAtIndex:(i+5)]]; 
      [qArr addObject:[multipleChoicePractice objectAtIndex:(i+6)]]; 
      [qArr addObject:[multipleChoicePractice objectAtIndex:(i+7)]]; 
      [qArr addObject:[multipleChoicePractice objectAtIndex:(i+8)]]; 
      [qArr addObject:[multipleChoicePractice objectAtIndex:(i+9)]]; 

      [questionGroupArray addObject:qArr]; 
     } 

別の最適化は、ループ

for(i=0;i<90;i= i+10) 
{ 
qArr = [NSMutableArray array]; 
for (j=0;i<10;j++) 
{ 
[qArr addObject:[multipleChoicePractice objectAtIndex:j]]; 
} 
} 
+0

これをすごく見て、私はこれもうまくいったと信じています。 ty – JustAnotherCoder

+0

オフコースではありますが、PeyoloWには優れたソリューションがあります。 –

関連する問題