Sha256: b3f1d145cd3624e89e0a4341f159523fd2f4e21adb0c948f91e006caa8342d66
Contents?: true
Size: 1.64 KB
Versions: 1
Compression:
Stored size: 1.64 KB
Contents
# Persistence module built on top of NSUserDefaults module App module Persistence module_function def app_key @app_key ||= NSBundle.mainBundle.bundleIdentifier end def storage_file @persistence_storage_file ||= "default_persistence_file" end def storage_file=(value) @persistence_storage_file = value end def []=(key, value) storage.setObject(value, forKey: storage_key(key)) storage.synchronize end def [](key) value = storage.objectForKey storage_key(key) # RubyMotion currently has a bug where the strings returned from # standardUserDefaults are missing some methods (e.g. to_data). # And because the returned object is slightly different than a normal # String, we can't just use `value.is_a?(String)` value.class.to_s == 'String' ? value.dup : value end def merge(values) values.each do |key, value| storage.setObject(value, forKey: storage_key(key)) end storage.synchronize end def delete(key) value = storage.objectForKey storage_key(key) storage.removeObjectForKey(storage_key(key)) storage.synchronize value end def storage NSUserDefaults.standardUserDefaults end def storage_key(key) "#{app_key}_#{storage_file}_#{key}" end def all hash = storage.dictionaryRepresentation.select{|k,v| k.start_with?("#{app_key}_#{storage_file}") } new_hash = {} hash.each do |k,v| new_hash[k.sub("#{app_key}_#{storage_file}_", '')] = v end new_hash end end end # delicious shortcut PP = App::Persistence unless defined? PP
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
PackingPeanut-1.0.0 | lib/PackingPeanut-ios/PackingPeanut.rb |