2016-07-23 1 views
0

내 데이터에 Firebase를 사용하고 지속성을 사용하여 해당 데이터를 오프라인으로 볼 수 있습니다. 내 앱이 아직 베타 버전이므로 앱을 다운시켜 수정하는 버그는 있지만 앱을 삭제하고 새 버전을 다시 설치할 때까지 앱이 여전히 다운됩니다. 예를 들어 사용자 목록이 있습니다. 사용자가 앱에 가입하고 데이터베이스에 잘못 입력되면 앱의 나머지 부분은 정상적으로 작동하지만 사용자가 모든 사용자를 볼 수있는 사용자 메뉴가 충돌합니다. 따라서 오류를 수정하고 TestFlight에서 새 버전을 푸시하지만 사용자가 볼 때 문제가 해결 되더라도 여전히 충돌이 발생합니다. 앱을 삭제하고 다시 설치하기 전까지는 작동하지 않습니다.앱이 업데이트 된 후에도 응용 프로그램이 여전히 충돌을 일으킬 수있는 영구 데이터

나는 이것이 내 지속성이 켜져 있기 때문인 것으로 알고 있지만, 앱의 새 버전이 설치되었을 때만 메모리에있는 것을 프로그래밍 방식으로 지우는 방법이 있습니까? 모든 테스터에게 삭제하고 다시 설치할 필요가 없으면 버그가 나타날 때마다 다시 설치하라는 말을하고 싶지 않습니다.

답변

0

새 버전에서 데이터베이스/콘텐츠 구조를 변경 한 것 같습니다. 따라서 오래된 (지속 된) 데이터베이스/컨텐트에 대한 읽기/쓰기가 실패했습니다. 일반적으로 데이터베이스/컨텐츠를 이전 버전에서 새 버전으로 변환하는 마이그레이션 규칙을 정의해야하므로 문제없이 업데이트 한 후에 사용할 수 있습니다. 나는 파이어베이스를 모른다. 그래서 나는 당신을 도울 수 없다.

또 다른 대안은 호환되지 않는 새 버전이있을 때마다 영구 데이터를 제거하고 업데이트 직후 정리로 시작하는 것입니다. 이미 실행 된 앱의 버전이 1.0.0 인 경우 앱 흐름의 초기 단계에서 이와 비슷한 작업을 수행 할 수 있다고 가정합니다.

NSString *lastKnownVersion = [[NSUserDefaults standardUserDefaults] stringForKey:@"LastKnownAppVersion"]; 
NSString *currentVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"] 
if (!lastKnownVersion || [currentVersion compare:newVersion options:NSNumericSearch]==NSOrderedAscending) { 
    if (!lastKnownVersion) { 
     // first start after update from version 1.0.0 (or lower) to a larger version 
     // cleanup code here 
    } else if ([lastKnownVersion compare:@"2.0.0" options:NSNumericSearch]==NSOrderedAscending) { 
     // first start after update from version 1.0.1 up to 2.0.0 to a larger version 
     // cleanup code here 
    } // ... add more versions that need a legacy handling 
    [[NSUserDefaults standardUserDefaults] setObject:currentVersion forKey:@"LastKnownAppVersion"]; 
    [[NSUserDefaults standardUserDefaults] synchronize]; 
} 
관련 문제