2014-02-01 3 views
0

У меня есть несколько строк кода, которые вызываются только при первом запуске приложения в методе didFinishLaunchingWithOptions, но теперь проблема в том, что мне нужно вызвать эту часть кода в новой версии приложения, потому что я внесла некоторые изменения там. не удаляются при обновлении, поэтому какой способ лучше исправить. Вот мой код.Как вызвать метод в новой версии приложения?

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
if(![fn chkAppRunningFirstTime]) 
    { 
     [fn createFolder:@"productImages"]; 
     [fn addSkipBackupAttributeToItemAtURL:@"productImages"]; 
     [fn createFolder:@"productImages/thumb"]; 
     [fn createFolder:@"productImages/medium"]; 
     [fn createFolder:@"productImages/large"]; 

     [db executeQuery:"drop table productImgTbl;"]; 
     [db executeQuery:"create table productImgTbl ('no' INTEGER PRIMARY KEY AUTOINCREMENT, 'img_name' text, 'img_url' text);"]; 
} 
return YES; 
} 

fn - мой класс функций, в котором я сохраняю значение таким образом.

- (BOOL)chkAppRunningFirstTime 
{ 
    return [defaults boolForKey:@"firstTime"]; 
} 

- (void)setFirstTime:(BOOL)val 
{ 
    [defaults setBool:val forKey:@"firstTime"]; 
    [defaults synchronize]; 
} 

Любое предложение будет рассмотрено. Спасибо

ответ

1

Для меня ваша логика немного обратная.

- (BOOL)chkAppRunningFirstTime 
{ 
    return [defaults boolForKey:@"firstTime"]; 
} 

Этот метод возвращает логически противоположное значение имени метода. Когда это первый раз, она возвращает NO ...

- (void)setFirstTime:(BOOL)val 
{ 
    [defaults setBool:val forKey:@"firstTime"]; 
    [defaults synchronize]; 
} 

Этот метод не должен принимать параметр. Это может быть только первый раз, поэтому установка значения всегда имеет одинаковое значение.

Как логика в обратном направлении, было бы лучше изменить имя используемого ключа, например, initialisationHasExecuted.

Единственное, что нужно рассмотреть, это номер версии. Вам нужно будет запустить другой код обновления в будущих версиях? Как это должно быть связано с этим?

+0

Нет, я меняю код в этой версии. У меня нет простого изменения кода в будущей версии. – jamil

+1

Однако вам нужно рассмотреть все пути обновления. Сравните людей, которые устанавливают приложение в первый раз, и людей, которые обновляют вашу текущую (или более старую) версию. – Wain

+0

, но во-вторых, о параметре я уверен, что он принимает параметр, потому что я назначаю его таким образом [fn setFirstTime: YES]; , – jamil

1

Для этого вы можете сохранить предыдущий номер версии в своем приложении. Технически вы сохраняете текущую версию вашего приложения (вы можете получить его из инфо-plist) для ключевой предыдущей версии. Затем вы можете проверить первый запуск, соответствует ли предыдущая версия текущей версии. Если это не соответствует, вы знаете, что вы новая версия. Обновите предыдущую версию в Userdefaults с текущей версией.

Смежные вопросы