2016-07-13 4 views
-1

로그인 한 사용자에 대한 정보를 CoreData 및 싱글 톤 클래스에 저장하는 응용 프로그램을 개발 중입니다. 사용자가 로그인 한 후, 나는 coredata에서 데이터를 가져 와서 싱글 톤에서 변수를 설정합니다.iOS Swift - 싱글 톤 데이터 지속성

내 질문 : 응용 프로그램이 메모리 경고 문제를 수신하고 싱글의 데이터가 발표 될 예정이다

경우, 내 응용 프로그램이 충돌합니다. 이 상황에서 나는 무엇을 할 수 있습니까?

감사합니다.

답변

1

NSArray *myArray이라는 로컬 속성이 필요한 모든 데이터를 저장하는 싱글 톤 .m 파일에 있다고 가정 해 보겠습니다. 당신이해야 할 일은 nil이 아닌 배열을 반환하는 헤더 파일에 메소드를 추가하는 것이며, nil의 경우에는 저장 공간에서 다시로드하여 반환합니다. - (void)didReceiveMemoryWarning 메서드를 재정의하고 메모리 경고의 경우 데이터를 저장하십시오.
[[mySingleton sharedInstance] storedData]

+0

답변 해 주셔서 감사합니다. 따라서 싱글 톤에 저장된 데이터가 메모리 waning에 의해 삭제 된 경우 해당 데이터를 다시 갖는 유일한 방법은 로컬 db를 다시 페치하는 것입니다. –

1
override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
} 

기본적으로이 방법을 것이다 귀하의 ViewController, 그리고 앱 충돌하기 전에,이 방법은 자동으로 실행됩니다, 당신은 당신의 데이터가 장치에 저장 될 수 있는지 확인하기 위해이 방법으로 코드를 작성하고 해제해야 그것.

+0

그래, 나도 알아 :

//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]; } 

지금 당신은 항상 당신이 단순히 메서드를 호출하여 필요한 데이터를 얻을 수 있습니다 :
다음은 목표 - C로 작성된 샘플 코드입니다. 그러나이 경우 싱글 톤의 변수는 무효가됩니다. 따라서 coreData에서 데이터를 다시 가져와야하며 싱글 톤에서 변수를 다시 설정해야합니까? –

관련 문제