Datastore.read always returning nil

Hi all,
I'm using SDK 1.10 (Windows, LUA using the emulator), and trying something very basic with datastore, which is to store a table and them immediately load it (and yes Hungarian notation works for me):

function fSaveMap(fvMap)
	playdate.datastore.write(rHexList,fvMap,true)
end

function fLoadMap(fvMap)
	rHexList = playdate.datastore.read(fvMap)
end

The save works fine and the json file is as I'd expect it to look. However whenever I try to load it, it always comes back nil. I've tried simplifying the table and turning off the prettification when saving (and I'm calling , but no dice. I'm at a loss because of how straightforward this all seems like it should be. Are there any other limitations here of which maybe I'm not aware?

Perhaps you could share the name and contents of the resulting json file, too?
Is the value of fvMap equal for both save and write? I would just add a print(rHexList,fvMap,true)
and print(fvMap) to sanity-check what values are being used. Note that in lua, nil values are happily accepted without throwing errors in most situations

Sure, here's the file as it's saved. Name is testmapsave.json, and I'm calling it to test this out right after randomly generating a hex map. Write works fine, but the Read never does. I've already done printouts to ensure values are going in and out correctly, but as soon as I try the Read, whatever I return it into is nil.

fMapRandGen()
fSaveMap("testmapsave")
fLoadMap("testmapsave")
[
	 {
		"class":2,
		"image":"userdata 00000169B0E52A48",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":-5,
		"y":0,
		"z":5
	},
	 {
		"class":5,
		"image":"userdata 00000169B0E52578",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":-5,
		"y":1,
		"z":4
	},
	 {
		"class":3,
		"image":"userdata 00000169B0E52EA8",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":-5,
		"y":2,
		"z":3
	},
	 {
		"class":4,
		"image":"userdata 00000169B0E525E8",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":-5,
		"y":3,
		"z":2
	},
	 {
		"class":7,
		"image":"userdata 00000169B0E527A8",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":-5,
		"y":4,
		"z":1
	},
	 {
		"class":1,
		"image":"userdata 00000169B0E52738",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":-5,
		"y":5,
		"z":0
	},
	 {
		"class":7,
		"image":"userdata 00000169B0E527A8",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":-4,
		"y":-1,
		"z":5
	},
	 {
		"class":5,
		"image":"userdata 00000169B0E52268",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":-4,
		"y":0,
		"z":4
	},
	 {
		"class":6,
		"image":"userdata 00000169B0E52F18",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":-4,
		"y":1,
		"z":3
	},
	 {
		"class":8,
		"image":"userdata 00000169B0E52B98",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":-4,
		"y":2,
		"z":2
	},
	 {
		"class":6,
		"image":"userdata 00000169B0E522D8",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":-4,
		"y":3,
		"z":1
	},
	 {
		"class":1,
		"image":"userdata 00000169B0E52738",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":-4,
		"y":4,
		"z":0
	},
	 {
		"class":1,
		"image":"userdata 00000169B0E52738",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":-4,
		"y":5,
		"z":-1
	},
	 {
		"class":7,
		"image":"userdata 00000169B0E52118",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":-3,
		"y":-2,
		"z":5
	},
	 {
		"class":8,
		"image":"userdata 00000169B0E52AB8",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":-3,
		"y":-1,
		"z":4
	},
	 {
		"class":2,
		"image":"userdata 00000169B0E52C08",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":-3,
		"y":0,
		"z":3
	},
	 {
		"class":8,
		"image":"userdata 00000169B0E52AB8",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":-3,
		"y":1,
		"z":2
	},
	 {
		"class":1,
		"image":"userdata 00000169B0E523B8",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":-3,
		"y":2,
		"z":1
	},
	 {
		"class":8,
		"image":"userdata 00000169B0E52188",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":-3,
		"y":3,
		"z":0
	},
	 {
		"class":6,
		"image":"userdata 00000169B0E52F18",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":-3,
		"y":4,
		"z":-1
	},
	 {
		"class":8,
		"image":"userdata 00000169B0E52B98",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":-3,
		"y":5,
		"z":-2
	},
	 {
		"class":4,
		"image":"userdata 00000169B0E52CE8",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":-2,
		"y":-3,
		"z":5
	},
	 {
		"class":4,
		"image":"userdata 00000169B0E52CE8",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":-2,
		"y":-2,
		"z":4
	},
	 {
		"class":1,
		"image":"userdata 00000169B0E52738",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":-2,
		"y":-1,
		"z":3
	},
	 {
		"class":1,
		"image":"userdata 00000169B0E52C78",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":-2,
		"y":0,
		"z":2
	},
	 {
		"class":7,
		"image":"userdata 00000169B0E52D58",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":-2,
		"y":1,
		"z":1
	},
	 {
		"class":7,
		"image":"userdata 00000169B0E527A8",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":-2,
		"y":2,
		"z":0
	},
	 {
		"class":8,
		"image":"userdata 00000169B0E52AB8",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":-2,
		"y":3,
		"z":-1
	},
	 {
		"class":4,
		"image":"userdata 00000169B0E520A8",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":-2,
		"y":4,
		"z":-2
	},
	 {
		"class":4,
		"image":"userdata 00000169B0E525E8",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":-2,
		"y":5,
		"z":-3
	},
	 {
		"class":2,
		"image":"userdata 00000169B0E52658",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":-1,
		"y":-4,
		"z":5
	},
	 {
		"class":3,
		"image":"userdata 00000169B0E52EA8",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":-1,
		"y":-3,
		"z":4
	},
	 {
		"class":8,
		"image":"userdata 00000169B0E52B98",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":-1,
		"y":-2,
		"z":3
	},
	 {
		"class":6,
		"image":"userdata 00000169B0E522D8",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":-1,
		"y":-1,
		"z":2
	},
	 {
		"class":7,
		"image":"userdata 00000169B0E52D58",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":-1,
		"y":0,
		"z":1
	},
	 {
		"class":1,
		"image":"userdata 00000169B0E52C78",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":-1,
		"y":1,
		"z":0
	},
	 {
		"class":1,
		"image":"userdata 00000169B0E523B8",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":-1,
		"y":2,
		"z":-1
	},
	 {
		"class":4,
		"image":"userdata 00000169B0E52CE8",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":-1,
		"y":3,
		"z":-2
	},
	 {
		"class":3,
		"image":"userdata 00000169B0E52EA8",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":-1,
		"y":4,
		"z":-3
	},
	 {
		"class":1,
		"image":"userdata 00000169B0E523B8",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":-1,
		"y":5,
		"z":-4
	},
	 {
		"class":5,
		"image":"userdata 00000169B0E52578",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":0,
		"y":-5,
		"z":5
	},
	 {
		"class":8,
		"image":"userdata 00000169B0E52188",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":0,
		"y":-4,
		"z":4
	},
	 {
		"class":1,
		"image":"userdata 00000169B0E523B8",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":0,
		"y":-3,
		"z":3
	},
	 {
		"class":2,
		"image":"userdata 00000169B0E52A48",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":0,
		"y":-2,
		"z":2
	},
	 {
		"class":8,
		"image":"userdata 00000169B0E52188",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":0,
		"y":-1,
		"z":1
	},
	 {
		"class":7,
		"image":"userdata 00000169B0E52D58",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":0,
		"y":0,
		"z":0
	},
	 {
		"class":2,
		"image":"userdata 00000169B0E52A48",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":0,
		"y":1,
		"z":-1
	},
	 {
		"class":1,
		"image":"userdata 00000169B0E523B8",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":0,
		"y":2,
		"z":-2
	},
	 {
		"class":5,
		"image":"userdata 00000169B0E52348",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":0,
		"y":3,
		"z":-3
	},
	 {
		"class":8,
		"image":"userdata 00000169B0E52B98",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":0,
		"y":4,
		"z":-4
	},
	 {
		"class":4,
		"image":"userdata 00000169B0E525E8",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":0,
		"y":5,
		"z":-5
	},
	 {
		"class":5,
		"image":"userdata 00000169B0E52268",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":1,
		"y":-5,
		"z":4
	},
	 {
		"class":3,
		"image":"userdata 00000169B0E52EA8",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":1,
		"y":-4,
		"z":3
	},
	 {
		"class":7,
		"image":"userdata 00000169B0E52D58",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":1,
		"y":-3,
		"z":2
	},
	 {
		"class":1,
		"image":"userdata 00000169B0E52738",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":1,
		"y":-2,
		"z":1
	},
	 {
		"class":5,
		"image":"userdata 00000169B0E52348",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":1,
		"y":-1,
		"z":0
	},
	 {
		"class":7,
		"image":"userdata 00000169B0E52118",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":1,
		"y":0,
		"z":-1
	},
	 {
		"class":7,
		"image":"userdata 00000169B0E52118",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":1,
		"y":1,
		"z":-2
	},
	 {
		"class":7,
		"image":"userdata 00000169B0E52D58",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":1,
		"y":2,
		"z":-3
	},
	 {
		"class":1,
		"image":"userdata 00000169B0E52738",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":1,
		"y":3,
		"z":-4
	},
	 {
		"class":5,
		"image":"userdata 00000169B0E52578",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":1,
		"y":4,
		"z":-5
	},
	 {
		"class":4,
		"image":"userdata 00000169B0E52CE8",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":2,
		"y":-5,
		"z":3
	},
	 {
		"class":1,
		"image":"userdata 00000169B0E52738",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":2,
		"y":-4,
		"z":2
	},
	 {
		"class":7,
		"image":"userdata 00000169B0E52118",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":2,
		"y":-3,
		"z":1
	},
	 {
		"class":4,
		"image":"userdata 00000169B0E525E8",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":2,
		"y":-2,
		"z":0
	},
	 {
		"class":2,
		"image":"userdata 00000169B0E52658",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":2,
		"y":-1,
		"z":-1
	},
	 {
		"class":7,
		"image":"userdata 00000169B0E527A8",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":2,
		"y":0,
		"z":-2
	},
	 {
		"class":4,
		"image":"userdata 00000169B0E520A8",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":2,
		"y":1,
		"z":-3
	},
	 {
		"class":1,
		"image":"userdata 00000169B0E52738",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":2,
		"y":2,
		"z":-4
	},
	 {
		"class":7,
		"image":"userdata 00000169B0E52D58",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":2,
		"y":3,
		"z":-5
	},
	 {
		"class":6,
		"image":"userdata 00000169B0E526C8",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":3,
		"y":-5,
		"z":2
	},
	 {
		"class":8,
		"image":"userdata 00000169B0E52188",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":3,
		"y":-4,
		"z":1
	},
	 {
		"class":5,
		"image":"userdata 00000169B0E52578",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":3,
		"y":-3,
		"z":0
	},
	 {
		"class":2,
		"image":"userdata 00000169B0E52658",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":3,
		"y":-2,
		"z":-1
	},
	 {
		"class":5,
		"image":"userdata 00000169B0E52348",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":3,
		"y":-1,
		"z":-2
	},
	 {
		"class":2,
		"image":"userdata 00000169B0E52658",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":3,
		"y":0,
		"z":-3
	},
	 {
		"class":5,
		"image":"userdata 00000169B0E52578",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":3,
		"y":1,
		"z":-4
	},
	 {
		"class":1,
		"image":"userdata 00000169B0E52738",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":3,
		"y":2,
		"z":-5
	},
	 {
		"class":6,
		"image":"userdata 00000169B0E52F18",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":4,
		"y":-5,
		"z":1
	},
	 {
		"class":2,
		"image":"userdata 00000169B0E52C08",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":4,
		"y":-4,
		"z":0
	},
	 {
		"class":3,
		"image":"userdata 00000169B0E52498",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":4,
		"y":-3,
		"z":-1
	},
	 {
		"class":1,
		"image":"userdata 00000169B0E52C78",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":4,
		"y":-2,
		"z":-2
	},
	 {
		"class":3,
		"image":"userdata 00000169B0E52428",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":4,
		"y":-1,
		"z":-3
	},
	 {
		"class":8,
		"image":"userdata 00000169B0E52AB8",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":4,
		"y":0,
		"z":-4
	},
	 {
		"class":4,
		"image":"userdata 00000169B0E520A8",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":4,
		"y":1,
		"z":-5
	},
	 {
		"class":7,
		"image":"userdata 00000169B0E52D58",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":5,
		"y":-5,
		"z":0
	},
	 {
		"class":3,
		"image":"userdata 00000169B0E52428",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":5,
		"y":-4,
		"z":-1
	},
	 {
		"class":7,
		"image":"userdata 00000169B0E52118",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":5,
		"y":-3,
		"z":-2
	},
	 {
		"class":6,
		"image":"userdata 00000169B0E526C8",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":5,
		"y":-2,
		"z":-3
	},
	 {
		"class":3,
		"image":"userdata 00000169B0E52428",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":5,
		"y":-1,
		"z":-4
	},
	 {
		"class":7,
		"image":"userdata 00000169B0E52D58",
		"occupant":0,
		"open":-1,
		"range":0,
		"x":5,
		"y":0,
		"z":-5
	}
]

I think this is a scope gotcha.

Try:

function fLoadMap(fvMap)
	return playdate.datastore.read(fvMap)
end

rHexList = fLoadMap("testmapsave")

Thanks a lot, that worked. But... why? The save function has no problem reading the global table rHexList and making use of it. Why does the load function seem to treat scope differently?

It was a given that you were using rHexList outside of the load function, so it was a small jump to think that it was a scope problem.

Why depends on how and where you are declaring your variable and is a bit of a Lua quirk. In your code once the function ends the variable goes back to its previous value (nil).

This is a nice summary:
http://lua-users.org/wiki/ScopeTutorial

Making the function local is also a solution.