2017-07-28 95 views
-6

在一個視圖控制器中,我存儲了一些數組值,我將從另一個視圖控制器獲取該值。 如何保存共享管理器中的數組值以及如何從另一個視圖控制器中檢索該數組值?如何在Xcode中使用共享首選項?那可能嗎?請幫助我的例子,謝謝。如何使用objective-c在xcode中使用共享首選項?

我的代碼是

  • (ID)sharedManager {

    靜態AssistantView * sharedMyManager =零;

    static dispatch_once_t onceToken;

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

    return sharedMyManager; }

和我把值

[[AssistantView sharedManager]結果]; //其中結果是數組

+0

你應該檢查:https://developer.apple.com/documentation/foundation/userdefaults 這是非常簡單的解釋。 – Stefan

+2

@Stefan在'NSUserDefault'中存儲數組並不是一個好的做法 –

+0

您可以在AppDelegate文件中聲明全局變量並在不同的視圖控制器之間共享。 –

回答

0

你應該使用一個單獨的類像這樣

#import <foundation/Foundation.h> 

    @interface MySingleton : NSObject { 
    } 

    @property (nonatomic, retain) NSArray *mySharedArray; 

     +(id)sharedMySingleton; 

    @end 

.M文件

@implementation MySingleton 
static MySingleton* _sharedMySingleton = nil; 

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

     return _sharedMySingleton; 
    } 

    return nil; 
} 

,並調用它在任何的viewController像

[[MySingleton sharedMySingleton] mySharedArray]; 
+0

我只是把我的價值這樣 [[AssistantView sharedManager]結果]; 這裏的結果是數組。 我用這個,但我得到這樣的錯誤 崩潰: - [AssistantView結果]:無法識別的選擇發送到實例0x7fa5de047200 – Prasen

0

使用NSUserDefaults

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

使用的AppDelegate獲取

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

替代

1定義宏

在的appDelegate

@property (nonatomic) NSArray *arrObjects; 

3組對象屬性10

2附加屬性的對象。

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

4獲得值

NSArray *globalObjects = APPDELEGATE.arrObjects 
0

1)創建與NSObject的文件作爲子類(ⅰ。È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)要訪問陣列

[[SharedClass sharedManager]array]; 

3)要設置陣列

[[SharedClass sharedManager]setArray];