- Singleton class DataLoader - set values from Core Data in AppDelegate, however cannot access DataLoader variables in other classes
- #import <Foundation/Foundation.h>
- #import "cocos2d.h"
- @interface DataLoader : NSObject {
- }
- //setup singleton
- +(DataLoader *) sharedDataLoader;
- @property (nonatomic, retain) NSMutableArray * veHint;//2 characters
- #import "DataLoader.h"
- #import <CoreData/CoreData.h>
- @implementation DataLoader
- @synthesize veHint;
- static DataLoader * myDataLoader = nil;
- +(DataLoader *) sharedDataLoader{
- if(myDataLoader == nil){
- myDataLoader = [[[DataLoader alloc]init]retain];
- }
- return myDataLoader;
- }
- -(id) init
- {
- if((self = [super init])){
- veHint = [NSMutableArray arrayWithCapacity:10];
- }
- return self;
- }
- #import "AppDelegate.h"
- #import "GameScene.h"
- #import "RootViewController.h"
- #import "Word.h"
- #import "DataLoader.h"
- -(void) applicationDidFinishLaunching:(UIApplication*)application
- {
- //other standard stuff here...
- //my load data method using data loader
- [self getRandomData];
- //other standard stuff here...
- // Run the intro Scene
- [[CCDirector sharedDirector] runWithScene: [GameScene node]];
- }
- //other standard methods for Core Data
- //Random data loader
- -(void) fetchRandomData: (NSString *) searchInteger{
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- NSLog(@"fetching random data for word size: %@", searchInteger);
- NSFetchRequest *request = [[NSFetchRequest alloc] init];
- NSManagedObjectContext *managedObjectContext = self.managedObjectContext;
- NSEntityDescription *entity = [NSEntityDescription entityForName:@"Word" inManagedObjectContext:managedObjectContext];
- [request setEntity:entity];
- //setup predicate
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY %K == %@", @"size", searchInteger];
- [request setPredicate:predicate];
- NSError *error = nil;
- NSArray *fetchResults = [managedObjectContext executeFetchRequest:request error:&error];
- NSLog(@"fetch results count = %i", [fetchResults count]);
- [request release];
- NSMutableArray * results = [NSMutableArray arrayWithCapacity:10];
- NSMutableArray * fetchedIndexes = [NSMutableArray arrayWithCapacity:10];
- //get the total count, randomize selection of 10 results from the list
- int j = 0;
- while (j<10) {
- int index = arc4random() % [fetchResults count];
- //get only unique values
- if ([fetchedIndexes containsObject:[NSNumber numberWithInt:index]] == false) {
- [fetchedIndexes addObject:[NSNumber numberWithInt:index]];
- Word * word = (Word *) [fetchResults objectAtIndex:index];
- //NSLog(@"j = %i, index = %i, wordsize = %@, wordstring = %@",j, index, word.size, word.wordString);
- [results addObject:word];
- j++;
- }
- }
- //set dataloader
- [[DataLoader sharedDataLoader] setVeHint:results];
- [pool drain];
- }
- #import <Foundation/Foundation.h>
- @interface DataManager : NSObject {
- NSDate *someDate;
- }
- @property (nonatomic, retain) NSDate *someDate;
- +(DataManager*)sharedInstance;
- - (void)loadSettings;
- - (void)saveSettings;
- @end
- #import "DataManager.h"
- static DataManager *dataManagerInstance;
- @implementation DataManager
- @synthesize someDate = _someDate;
- // singleton method
- +(DataManager*)sharedInstance {
- if(!dataManagerInstance) {
- dataManagerInstance = [[DataManager alloc] init];
- }
- return dataManagerInstance;
- }
- - (void)saveSettings {
- // save your data
- }
- - (void)loadSettings {
- // load your data
- }
- [[DataLoader sharedDataLoader] setVeHint:results];
- [[DataLoader sharedDataLoader] setVeHint:[results retain]];