2013-12-23 68 views
1

我創建了這樣一個單:保存和載入一個單身

+ (instancetype)sharedDataStore { 

static SSDataStore *_sharedDataStore = nil; 
static dispatch_once_t onceToken; 
dispatch_once(&onceToken, ^{ 
    _sharedDataStore = [[self alloc] init]; 
}); 

return _sharedDataStore; 
} 

什麼是節約並將其加載到從文件夾的最佳方式? 我試着用NSKeyedArchiver保存它,但後來我不知道如何加載它。我該怎麼做而不是

_sharedDataStore = [[self alloc] init]; 

+0

保存什麼,它的值?你有什麼嘗試? – rckoenes

+0

我試着用NSKeyedArchiver保存它,但後來我不知道如何加載它。我該怎麼做而不是 _sharedDataStore = [[self alloc] init]; ? – joelfischerr

+0

爲什麼你想保存單身人士的對象。你應該把你的屬性存儲在光盤上,並且一個sinleton應該確保你訪問正確的文件。 – Greg

回答

1

要恢復單例狀態,您需要實現NSCoding協議中的initWithCoder方法。喜歡的東西:

- (id)initWithCoder:(NSCoder *)decoder { 
    self = [super init]; 
    if (!self) { 
     return nil; 
    } 

    self.property1 = [decoder decodeObjectForKey:@"property1"]; 
    self.property2 = [decoder decodeObjectForKey:@"property2"]; 

    return self; 
} 
+0

我這樣做了,但我該如何檢查磁盤上是否存在該對象,或者我是否必須初始化它? – joelfischerr

+0

@sixbeat你不必擔心磁盤上的對象,歸檔系統會爲你做到這一點。 –