2015-10-28 36 views
0

我作出這樣一個單:目標C - 辛格爾頓不應用程序重啓後持續數據

+ (CurrentUser *)sharedInstance { 
    static id sharedInstance = nil; 

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

    return sharedInstance; 
} 

它有一個叫做屬性:

@property (nonatomic, strong) NSData *profilePicData; 

我保存的圖像是這樣的:

[[CurrentUser sharedInstance] setProfilePicData:profilePictureData]; 

我正在加載圖像這樣:

if ([[CurrentUser sharedInstance]profilePicData]) { 

    self.profileImageView.image = [UIImage imageWithData:[[CurrentUser sharedInstance]profilePicData]]; 
} 

圖像顯示出來,一切都很好,但是當我重新啓動應用程序並轉到包含相同代碼的相同視圖控制器時,圖像不再出現在UIImageView中。這讓我相信這個單身人士並沒有堅持下去。

如何在使用單例對象重新啓動應用程序時持久化數據?

回答

3

單例實例僅在應用程序運行時處於活動狀態。您需要在設置文件時將profilePictureData保存到文件中,然後在創建單身人士時加載它,一旦應用程序再次運行。

對於寫,你可以使用[profilePicData writeToURL:atomically:]

然後在你單身的初始化則應將此文件再次[NSData dataWithContentsOfURL:]

的URL用於書寫必須使用加載相同加載到profilePicData,而且必須是在您應用程序的沙箱中。

請參閱NSData's documentation.