-6

In one view controller, I store some array value and I will get that value from another view controller. How to save array value in shared manager and how to retrieve that array value from another view controller? How to use shared preference in Xcode? Is that possible? Please help me with the example.Thank you.

my code is

  • (id)sharedManager {

    static AssistantView *sharedMyManager = nil;

    static dispatch_once_t onceToken;

    dispatch_once(&onceToken, ^{ sharedMyManager = [[self alloc] init]; });

    return sharedMyManager; }

and i put the value

[[AssistantView sharedManager]results]; // where results is array

Prasen
  • 81
  • 1
  • 7

3 Answers3

2

Use NSUserDefaults

Set

[[NSUserDefaults standardUserDefaults] setObject:@"Your Object" forKey:@"NameOfPreference"];
[[NSUserDefaults standardUserDefaults] synchronize];

Get

NSString *savedObject = [[NSUserDefaults standardUserDefaults]
    stringForKey:@"NameOfPreference"];
// its Your Object

Alternative using AppDelegate

1 Define Macro

#define APPDELEGATE  ((AppDelegate *)[[UIApplication sharedApplication] delegate])

2 add property for object in Appdelegate

@property (nonatomic) NSArray *arrObjects;

3 set object to property .

  APPDELEGATE.arrObjects = @[@"",@""];

4 Get value

  NSArray *globalObjects = APPDELEGATE.arrObjects
KKRocks
  • 8,222
  • 1
  • 18
  • 84
0

you should use a singleton class like this

#import <foundation/Foundation.h>

    @interface MySingleton : NSObject {
    }

     @property (nonatomic, retain) NSArray *mySharedArray;

      +(id)sharedMySingleton;

     @end

and in .m file

@implementation MySingleton
static MySingleton* _sharedMySingleton = nil;

+(id)sharedMySingleton
{
    @synchronized([MySingleton class])
    {
        if (!_sharedMySingleton)
          _sharedMySingleton = [[self alloc] init];

        return _sharedMySingleton;
    }

    return nil;
}

and call it in any viewController like

[[MySingleton sharedMySingleton] mySharedArray];
Amal T S
  • 3,327
  • 2
  • 24
  • 57
  • I just put my value like this [[AssistantView sharedManager]results]; here results is array. i used this but i getting error like this Crash: -[AssistantView results]: unrecognized selector sent to instance 0x7fa5de047200 – Prasen Jul 28 '17 at 13:55
0

1) Create a File with NSObject as subclass (i.e SharedClass)

SharedClass.m

    @implementation SharedClass

    + (instancetype)sharedManager {
        static SharedClass *sharedManager = nil;
        static dispatch_once_t onceToken;
        dispatch_once(&onceToken, ^{
            sharedManager = [[self alloc] init];
        });
        return sharedManager;
    }

    - (instancetype)init {
        if (self = [super init]) {

            // alloc or set object here

        return self;
    }

SharedClass.h

#import <Foundation/Foundation.h>

@interface SharedClass : NSObject
+ (instancetype)sharedManager;
// your array    
@end

2) To access array

[[SharedClass sharedManager]array];

3) To set array

[[SharedClass sharedManager]setArray];
Zღk
  • 854
  • 7
  • 25