Как сохранить стек в пользовательском свойстве в LiveCode?

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

Я думал, что смогу сделать это во время разработки:

set the cDataStack of stack "My Main Stack" to URL ("binfile:" & tDataStackFilePath)

А затем, когда пришло время создать новый стек хранилища данных, сделайте следующее:

set the defaultFolder to the documents folder
put the cDataStack of me into URL ("binfile:DataStack1.livecode")

... Но это не работает для меня. Он создает файл размером 0 КБ, хотя я ожидал, что это будет копия оригинала.

Это разумный способ создать стек данных для iOS? Демонстрирует ли мой код правильную концепцию?


person Charles B    schedule 07.08.2014    source источник


Ответы (1)


Возможно, cDataStack у меня пуст. Возможно, me имеет в виду неправильный элемент управления или стек. Попробуй это:

// set the property
put URL ("binfile:" & tDataStackFilePath) into myStackData
if myStackData is not empty then
  set the cDataStack of stack "My Main Stack" to myStackData
  put the result into rslt
  if rslt is not empty then
    beep
    answer error rslt
  end if
else
  beep
  answer error "This file is empty or doesn't exist."
end if

// get the propety
put specialFolderpath("documents") & "/DataStack1.LiveCode" into myPath
if the cDataStack of me is not empty then
  put the cDataStack of me into URL ("binfile:" & myPath)
  put the result into rslt
  if rslt is not empty then
    beep
    answer error rslt
  end if
else
  beep
  answer error "The property is empty."
end if

Вам не нужно записывать стек на диск перед его открытием. Ты можешь сделать это:

go stack the cDataStack of me
put the result into rslt
if rslt is not empty then
  beep
  aswer error rslt
end if
person Mark    schedule 07.08.2014
comment
Подтверждено... работает волшебно. Да, я имел в виду тестовую кнопку, содержащую стек, а не сам стек. Кроме того, я думаю, что, возможно, URL-адрес моего файла был сформирован неправильно. Несмотря ни на что, сейчас это работает. Спасибо! - person Charles B; 08.08.2014