Перейти к содержанию
  • 0
Ingalime

[IOS] хранение данных

Вопросы

Здравствуйте. Мне надо хранить определенную цифру между запусками приложения. Самый простой способ это ini файл. А как его этот ini файл хранить в ios приложении? Спасибо. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Рекомендуемые сообщения

  • 0

На мой скромный взгляд, самый простой сопсоб - это SQLite.

Но можно и в ini.

На мобильных платформах работает все как обычно.

iniMapFile: TIniFile;

iniMapFilePath := TPath.Combine(TPath.GetDocumentsPath, 'ИМЯФАЙЛА.ini');

IniFile := TIniFile.Create(iniMapFilePath);
 

Можно и в путь приложения сохранять.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

А в проекте ios как правильно добавить ini файл и обращаться к нему? Он должен быть в ресурсах?

Отредактировал Ingalime

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Нет не нужно его засовывать в ресурс. Создаете его при развертывании приложения как обычно.

Если нужно сделать начальные установки, то в методах класса TIniFile есть Read***  который возвращает значения по умолчанию в качестве параметра если нечего читать:

 Settings.ZonesColor := IniFile.ReadInteger('Settings','ZonesColor',TAlphaColors.Navy);

В данном случае, если в группе Settings не найдется параметр ZonesColor, то ReadInteger вернет значение Navy, если найдет вернет тот параметр, который там прописан.

Я обычно при развертывании создаю INI файл  с начальными установками, сохраняю его и потом с ним работаю. 


 

Отредактировал juppy

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Я с ini в vcl имею опыт работы. Я не до конца понимаю как с ini работать в ios проекте. Т.е. мне при старте надо создать этот файл? А где его создовать? Можно пример? Спасибо.

Отредактировал Ingalime

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Вот отличное описание для тех, кто ни разу не работал.

Там с примерами и прочим блекждеком.

http://docwiki.embarcadero.com/Libraries/Rio/en/System.IniFiles.TIniFile

http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/IniFiles_TIniFile.html

Создание файла и чтение из него данных занимает нематериальное время. 

Поэтому я делаю так:

Создаю сам файл с начальной инициализацией при первом развертывании. В примере - это создание главной формы.

И там же потом его читаю но уже созданный.

вот конструкция с начальной инициализацией чтением.

Цитата

procedure TfrmMainForm.ReadSettings;
var
  IniFile: TIniFile;
begin
  if not FileExists( iniMapFilePath ) then  
  begin
   IniFile := TIniFile.Create(iniMapFilePath);
   IniFile.WriteBool('Settings','ShowLocation',false);
   IniFile.DisposeOf;

   Settings.ShowLocation  := false;
   exit;
  end;

  IniFile := TIniFile.Create(iniMapFilePath);
  Settings.ShowLocation := IniFile.ReadBool('Settings','ShowLocation', false);
  IniFile.DisposeOf;
end;

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
В 20.03.2020 в 11:48, Ingalime сказал:

Я с ini в vcl имею опыт работы. Я не до конца понимаю как с ini работать в ios проекте. Т.е. мне при старте надо создать этот файл? А где его создовать? Можно пример? Спасибо.

у меня приложение работает так и в Андроид и Иос

в FormShow - вызываю Read, при первом запуске файла нет, ничего не заполняется.

При первом заполнении вручную полей и попытке входа по кнопке - делаю сохранение Write

При следующем запуске - файл уже есть и параметры входа считаются

Для создания файла со значениями "по умолчанию" можно сделать  в Read - try - Except ( добавил ) - но не проверял 

 

Цитата

 

procedure TFormMain.FormReadState(Sender: TObject);
var
  Ini: TIniFile;
begin
 ini := TIniFile.Create(TPath.Combine(TPath.GetDocumentsPath, 'fdw.ini'));
 try

   try


     EditName.Text := Ini.ReadString( 'Main', 'Name', '' );
     EditOtch.Text := Ini.ReadString( 'Main', 'MName', '' );
     EditDR.Text := Ini.ReadString( 'Main', 'DR', '' );
 

 

Except


 Ini.WriteString( 'Main', 'Name', 'Умолчание' ) ;
 Ini.WriteString( 'Main', 'MName', 'Умолчание' ) ;
 Ini.WriteString( 'Main', 'DR', '01.01.1980') ;

end 

finally
  Ini.Free;
 end;

end;

 

 

 

Цитата

 

procedure TFormMain.FormSaveState(Sender: TObject);
var
 Ini: TIniFile;

begin

 ini := TIniFile.Create(TPath.Combine(TPath.GetDocumentsPath, 'fdw.ini'));
 try

 Ini.WriteString( 'Main', 'Name', (FrmLogin as  TFrameLogin).editName.Text ) ;
 Ini.WriteString( 'Main', 'MName', (FrmLogin as  TFrameLogin).EditOtch.Text ) ;
 Ini.WriteString( 'Main', 'DR', (FrmLogin as  TFrameLogin).EditDR.Text ) ;

 finally
  Ini.Free;
 end;

end;

 

 

Отредактировал Сергей Сергеев

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...