2014-02-22 45 views
-2

我上的Xcode 5.我想創建的問題陣列編寫問卷應用程式iOS版,但問題是,每一個問題都有不同數量的答案也有一些問題哪裏有幾個正確的答案。陣列結構答案

例如:

Q1:天空...
A1:格林(錯)
A2:藍(正確)

Q2:狗是...
A1:哺乳動物(正確)
A2:爬行動物(錯)
A3:寵物(正確)

我無法弄清楚如何創建一個數組或數組的數組爲此。任何人?

回答

0
NSArray *mainArray = @[@[@"Q1",@[@[@"A1",@1],@[@"A2",@0],@[@"A3",@0]]],@[@"Q2",@[@[@"A1",@1],@[@"A2",@1],@[@"A3",@0]]]]; 

所以,上述mainArray包含整個數據 - >

首先其的[問題+答案]
即mainArray的每個對象都包含a questioncorresponding answers array陣列。
而且每個答案數組包含的answer and a number數組,它說,它的正確與否。

因此,如果number bool value爲1,則表示它的正確答案,否則如果它爲零,那麼它的錯誤答案。

因此,對於你的情況下,將

NSArray *mainArray = @[@[@"The sky is...",@[@[@"Green",@0],@[@"Blue",@1]]],@[@"The dog is a...",@[@[@"Mammal",@1],@[@"Reptile",@0],@[@"Pet",@1]]]]; 

//to get first question 
NSString *question1 = mainArray[0][0]; 
NSArray *answerArrayForQuestion1 = mainArray[0][1]; 
//lets assume user selects answer as 2 
//so to check whether its correct or not 
NSInteger selectedAnswer=2; 
BOOL correct=((NSNumber *)answerArrayForQuestion1[selectedAnswer-1][1]).boolValue; // which logs YES 
+0

這工作就好了!謝謝! –

2

我知道,人人都討厭編寫面向對象的代碼在Objective-C,但爲什麼不使用面向對象的方法?而不是使用陣列裏面的字典創建適當的類並去實現它。

@interface Question : NSObject 
@property (copy, nonatomic) NSString *text; 
@property (strong, nonatomic) NSArray *answers; 
+ (instancetype)questionWithText:(NSString *)text answers:(NSArray *)answer; 
@end 

@interface Answer : NSObject 
@property (copy, nonatomic) NSString *text; 
@property (assign, nonatomic, getter = isCorrect) BOOL correct; 
+ (instancetype)answerWithText:(NSString *)text isCorrect:(BOOL)correct; 
@end 

....

Answer *a1 = [Answer answerWithText:@"Mammal" isCorrect:YES]; 
Answer *a2 = [Answer answerWithText:@"Reprilte" isCorrect:NO]; 
Answer *a3 = [Answer answerWithText:@"Pet" isCorrect:YES]; 
Question *q = [Question questionWithText:@"The dog is a..." answers:@[a1, a2, a3]];