iOS Swift-单例数据持久性
我正在开发一个应用程序,在CoreData和singleton类中保存有关登录用户的信息。用户登录后,我从coredata获取数据,并从singleton设置变量 我的问题: 如果应用程序收到内存警告问题,并且来自singleton的数据将被释放,我的应用程序将崩溃。在这种情况下我能做什么 谢谢iOS Swift-单例数据持久性,ios,swift,core-data,singleton,Ios,Swift,Core Data,Singleton,我正在开发一个应用程序,在CoreData和singleton类中保存有关登录用户的信息。用户登录后,我从coredata获取数据,并从singleton设置变量 我的问题: 如果应用程序收到内存警告问题,并且来自singleton的数据将被释放,我的应用程序将崩溃。在这种情况下我能做什么 谢谢 override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } 默认情况下,您的ViewControll
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
默认情况下,您的ViewController将使用此方法,并且在应用程序崩溃之前,此方法将自动执行,您应该在此方法中编写一些代码,以确保您的数据可以保存在设备中,然后释放它。假设您在singleton的
.m
文件中有一个名为NSArray*myArray
的本地属性,其中存储了所有需要的数据。您所需要做的就是在头文件中添加一个方法,如果该方法不是nil
,则返回该数组,如果nil
,则使其从存储器重新加载并返回。同时重写
-(void)didReceiveMemoryWarning
方法,并在出现内存警告时保存数据。以下是用objective-c编写的示例代码:
//Singleton.h file
- (NSArray *)storedData;
//Singleton.m file
@property NSArray *myArray;
...
- (NSArray *)storedData
{
if (_myArray == nil)
_myArray = [self fetchMyArrayFromLocalStorage];
return _myArray;
}
- (NSArray *)fetchMyArrayFromLocalStorage
{
//Some code to fetch data from local storage
}
- (void)saveMyArrayToLocalStorage
{
//Code to save _myArray to local storage
}
- (void)didReceiveMemoryWarning
{
[self saveMyArrayToLocalStorage];
_myArray = nil; //Remove array if is needed
[super didReceiveMemoryWarning];
}
现在,只需调用方法:[[mySingleton sharedInstance]storedData]
好的,我知道。但在这种情况下,来自单例的变量将变为零,因此我需要再次从coreData获取数据,并再次从单例设置变量,否?谢谢您的回答!因此,如果存储在单例中的数据由于内存减少而被删除,那么再次获取该数据的唯一方法是再次获取本地数据库。