Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 7th, 2012  |  syntax: None  |  size: 3.64 KB  |  hits: 12  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. Singleton class DataLoader - set values from Core Data in AppDelegate, however cannot access DataLoader variables in other classes
  2. #import <Foundation/Foundation.h>
  3. #import "cocos2d.h"
  4.  
  5. @interface DataLoader : NSObject {
  6.  
  7. }
  8.  
  9. //setup singleton
  10. +(DataLoader *) sharedDataLoader;
  11. @property (nonatomic, retain) NSMutableArray * veHint;//2 characters
  12.        
  13. #import "DataLoader.h"
  14. #import <CoreData/CoreData.h>
  15.  
  16. @implementation DataLoader
  17. @synthesize veHint;
  18.  
  19. static DataLoader * myDataLoader = nil;
  20.  
  21. +(DataLoader *) sharedDataLoader{
  22.  
  23.     if(myDataLoader == nil){
  24.         myDataLoader = [[[DataLoader alloc]init]retain];
  25.     }
  26.     return myDataLoader;
  27. }
  28.  
  29. -(id) init
  30. {
  31.     if((self = [super init])){
  32.         veHint = [NSMutableArray arrayWithCapacity:10];
  33.     }
  34.     return self;
  35. }
  36.        
  37. #import "AppDelegate.h"
  38. #import "GameScene.h"
  39. #import "RootViewController.h"
  40. #import "Word.h"
  41. #import "DataLoader.h"
  42. -(void) applicationDidFinishLaunching:(UIApplication*)application
  43. {
  44. //other standard stuff here...
  45.  
  46. //my load data method using data loader
  47. [self getRandomData];
  48.  
  49. //other standard stuff here...
  50.  
  51. // Run the intro Scene
  52. [[CCDirector sharedDirector] runWithScene: [GameScene node]];
  53. }
  54.  
  55. //other standard methods for Core Data
  56.  
  57. //Random data loader
  58.  
  59. -(void) fetchRandomData: (NSString *) searchInteger{
  60.     NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
  61.     NSLog(@"fetching random data for word size: %@", searchInteger);
  62.  
  63.     NSFetchRequest *request = [[NSFetchRequest alloc] init];
  64.     NSManagedObjectContext *managedObjectContext = self.managedObjectContext;
  65.     NSEntityDescription *entity = [NSEntityDescription entityForName:@"Word" inManagedObjectContext:managedObjectContext];
  66.     [request setEntity:entity];
  67.  
  68.     //setup predicate
  69.     NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY %K == %@", @"size", searchInteger];
  70.     [request setPredicate:predicate];
  71.  
  72.     NSError *error = nil;
  73.     NSArray *fetchResults = [managedObjectContext executeFetchRequest:request error:&error];
  74.     NSLog(@"fetch results count = %i", [fetchResults count]);
  75.     [request release];
  76.  
  77.     NSMutableArray * results = [NSMutableArray arrayWithCapacity:10];
  78.     NSMutableArray * fetchedIndexes = [NSMutableArray arrayWithCapacity:10];
  79.     //get the total count, randomize selection of 10 results from the list
  80.  
  81.     int j = 0;
  82.     while (j<10) {
  83.         int index = arc4random() % [fetchResults count];
  84.         //get only unique values
  85.         if ([fetchedIndexes containsObject:[NSNumber numberWithInt:index]] == false)     {
  86.             [fetchedIndexes addObject:[NSNumber numberWithInt:index]];
  87.  
  88.             Word * word = (Word *) [fetchResults objectAtIndex:index];
  89.             //NSLog(@"j = %i, index = %i, wordsize = %@, wordstring = %@",j, index, word.size, word.wordString);
  90.             [results addObject:word];
  91.             j++;
  92.  
  93.         }
  94.     }
  95.     //set dataloader
  96.     [[DataLoader sharedDataLoader] setVeHint:results];
  97.  
  98.     [pool drain];  
  99.  
  100. }
  101.        
  102. #import <Foundation/Foundation.h>
  103.  
  104. @interface DataManager : NSObject {
  105.     NSDate *someDate;
  106. }
  107.  
  108. @property (nonatomic, retain) NSDate *someDate;
  109.  
  110. +(DataManager*)sharedInstance;
  111. - (void)loadSettings;
  112. - (void)saveSettings;
  113.  
  114. @end
  115.        
  116. #import "DataManager.h"
  117.  
  118. static DataManager *dataManagerInstance;
  119.  
  120. @implementation DataManager
  121.  
  122. @synthesize someDate = _someDate;
  123.  
  124. // singleton method
  125. +(DataManager*)sharedInstance {
  126.     if(!dataManagerInstance) {
  127.         dataManagerInstance = [[DataManager alloc] init];
  128.     }
  129.     return dataManagerInstance;
  130. }
  131.  
  132. - (void)saveSettings {
  133.     // save your data  
  134. }
  135.  
  136. - (void)loadSettings {
  137.     // load your data
  138. }
  139.        
  140. [[DataLoader sharedDataLoader] setVeHint:results];
  141.        
  142. [[DataLoader sharedDataLoader] setVeHint:[results retain]];