Data Persistence
Ben Rubinstein
benr_mc at cogapp.com
Tue Jul 31 14:01:38 EDT 2018
Hi John, welcome to the gang.
FWIW, if your needs are super-simple, saving the values of various fields -
and especially if those fields are not going to have multi-line values, you
may want to check out the keywords 'combine' and 'split'.
Combine takes a (simple, not nested) array and combines it into flat text with
the delimiters you specify for keys and records; split does the reverse.
So what I've done for this kind of case - simple mobile app, storing some
simple values in case it gets backgrounded - is keep all the data in an array;
update the array when the data changes (e.g. user edits a field, or some other
event) - and then calling a command along these lines:
command storeSettings
global gaSettings
local tPath, tFlat
put gaSettings into tFlat
combine tFlat using return and tab
put format("file://%s/settings.txt", prefsFolder()) into tPath
put tFlat into URL tPath
end storeSettings
The advantage over arrayEncode is that the file is very readable - with the
above delimiters, each line is an entry from the array, in the format
<key><tab><value>. I know Richard questions why one would ever want to read
"LSON": my answer is that during development it can be helpful, either
directly when developing on desktop, or attaching to error reports once the
app has moved onto a device.
The disadvantage is that you need a couple of characters that you know won't
be included in either key or value. It doesn't have to be tab and return; you
could use "◊" and "¶" - but if you have any doubts of what your users might
ever need to enter, this is an issue.
HTH,
Ben
On 27/07/2018 19:37, John McKenzie via use-livecode wrote:
>
> Thanks for the extra comments everyone. Glad my thought process was
> correct, databse is overkill, saving every text change is too much,
> etc, etc.
>
> As I said I will not be able to really do anything until next week.
>
> Thanks for mentioning the closeField command guys. I will check it
> out, but the name sounds like it explains it, loose focus on the field,
> field is closed, handling activated.
>
> Because I like word play I might make my own text file format, the
> "Extended Livecode Optimized Serialized Object Notation" format or
> ELSON. It adds just enough features to LSON to make identical to JSON.
> Being stupid and redundant it will be the hot new buzzword in the
> computing industry.
>
>
> Using arrays intigues me, especially if I can just keep it in RAM (It
> is a small amount of data for sure).
>
> Thanks for your continued help everyone. Off to super busy weekend
> planning and working on an event for Sunday. Will update you/ask
> follow-ups next week.
>
More information about the use-livecode
mailing list