Get the object stored at key, or null if nothing is available

Property definitions

app $ DataStore :: []
	# Get the object stored at `key`, or null if nothing is available
	fun [](key: String): nullable Object is abstract
lib/app/data_store.nit:88,2--89,49

ios :: data_store $ DataStore :: []
	redef fun [](key)
	do
		var nsstr = user_defaults.string_for_key(key.to_nsstring)

		if nsstr.address_is_null then return null

		# TODO report errors
		var deserializer = new JsonDeserializer(nsstr.to_s)
		var deserialized = deserializer.deserialize

		var errors = deserializer.errors
		if errors.not_empty then
			# An update may have broken the versioning compatibility
			print_error "{class_name} error at deserialization: {errors.join(", ")}"
			return null # Let's be safe
		end

		return deserialized
	end
lib/ios/data_store.nit:27,2--45,4

linux :: data_store $ DataStore :: []
	redef fun [](key)
	do
		# Get DB
		var db = self.db
		if db == null then return null

		# Prepare SELECT statement
		var stmt = db.select("* FROM {db_table} WHERE key == {key.to_sql_string}")
		if stmt == null then return null

		# Execute statment
		for row in stmt do
			# Get from statement
			var serialized = row[1].to_s
			stmt.close

			# Deserialize
			var deserializer = new JsonDeserializer(serialized)
			var deserialized = deserializer.deserialize

			var errors = deserializer.errors
			if errors.not_empty then
				# An update may have broken the versioning compatibility
				print_error "{class_name} error at deserialization: {errors.join(", ")}"
				return null # Let's be safe
			end

			return deserialized
		end

		stmt.close
		return null
	end
lib/linux/data_store.nit:61,2--93,4

android :: data_store $ DataStore :: []
	redef fun [](key) do return shared_preferences[key]
lib/android/data_store.nit:30,2--52