Guest User

Untitled

a guest
Aug 15th, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.39 KB | None | 0 0
  1. - (void)shuffle {
  2. if (!mReady) return;
  3.  
  4. NSMutableArray *result = [NSMutableArray array];
  5.  
  6. NSMutableArray *questionsCopy = [mQuestions mutableCopy];//[NSMutableArray arrayWithArray:mQuestions];
  7.  
  8. do {
  9. int randomIndex = 0;
  10.  
  11. randomIndex = arc4random() % [questionsCopy count];
  12. [result addObject:[questionsCopy objectAtIndex:randomIndex]];
  13. [questionsCopy removeObjectAtIndex:randomIndex];
  14. } while (([questionsCopy count] > 0));
  15.  
  16. [mQuestions removeAllObjects];
  17. [mQuestions setArray:result];
  18. }
  19.  
  20. #pragma mark -
  21.  
  22. - (void)parserDidStartDocument:(NSXMLParser *)parser {
  23. mReady = NO;
  24.  
  25. [mQuestions removeAllObjects];
  26. }
  27.  
  28. - (void)parserDidEndDocument:(NSXMLParser *)parser {
  29. mReady = YES;
  30.  
  31. dispatch_async(dispatch_get_main_queue(), ^{
  32. if (mDelegate && [mDelegate respondsToSelector:@selector(quizGeneratorDidLoad:)]) {
  33. [mDelegate quizGeneratorDidLoad:self];
  34. }
  35. });
  36.  
  37. if (mCurrentElement) {
  38. [mCurrentElement release];
  39. mCurrentElement = nil;
  40. }
  41.  
  42. if (mCurrentQuestion) {
  43. [mCurrentQuestion release];
  44. mCurrentQuestion = nil;
  45. }
  46.  
  47. if (mCurrentAnswer) {
  48. [mCurrentAnswer release];
  49. mCurrentAnswer = nil;
  50. }
  51.  
  52. if (mMutableString) {
  53. [mMutableString release];
  54. mMutableString = nil;
  55. }
  56. }
  57.  
  58. - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict {
  59. if ([elementName isEqualToString:@"question"]) {
  60. mCurrentQuestion = [[VTQuestion alloc] init];
  61. }
  62.  
  63. if ([elementName isEqualToString:@"title"]) {
  64. // nothing to do here
  65. }
  66.  
  67. if ([elementName isEqualToString:@"answers"]) {
  68. // nothing to do here
  69. }
  70.  
  71. if ([elementName isEqualToString:@"answer"]) {
  72. mCurrentAnswer = [[VTAnswer alloc] init];
  73.  
  74. NSString *correctAttr = [attributeDict objectForKey:@"correct"];
  75.  
  76. mCurrentAnswer.correct = [correctAttr boolValue];
  77. }
  78.  
  79. mCurrentElement = [elementName copy];
  80. }
  81.  
  82. - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
  83. NSString *string = [NSString stringWithString:mMutableString];
  84.  
  85. [mMutableString setString:[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]];
  86.  
  87. if ([mCurrentElement isEqualToString:@"title"]) {
  88. mCurrentQuestion.title = mMutableString;
  89. }
  90.  
  91. if ([elementName isEqualToString:@"answer"]) {
  92. mCurrentAnswer.title = mMutableString;
  93.  
  94. [mCurrentQuestion addAnswer:mCurrentAnswer];
  95.  
  96. [mCurrentAnswer release];
  97. }
  98.  
  99. if ([elementName isEqualToString:@"answers"]) {
  100.  
  101. }
  102.  
  103. if ([elementName isEqualToString:@"question"]) {
  104. [mQuestions addObject:mCurrentQuestion];
  105.  
  106. [mCurrentQuestion release];
  107. }
  108.  
  109.  
  110. [mCurrentElement release];
  111. mCurrentElement = nil;
  112.  
  113. [mMutableString release];
  114. mMutableString = nil;
  115. }
  116.  
  117. - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
  118. if (mMutableString == nil) {
  119. mMutableString = [[NSMutableString string] retain];
  120. }
  121.  
  122. [mMutableString appendString:string];
  123. }
Add Comment
Please, Sign In to add comment