Ejemplo n.º 1
0
        T Get <T>(string key, T defaultValue)
        {
            object value = null;

            lock (locker)
            {
                if (UserDefaults[key] == null)
                {
                    return(defaultValue);
                }

                switch (defaultValue)
                {
                case int i:
                    value = (int)(nint)UserDefaults.IntForKey(key);
                    break;

                case bool b:
                    value = UserDefaults.BoolForKey(key);
                    break;

                case long l:
                    var savedLong = UserDefaults.StringForKey(key);
                    value = Convert.ToInt64(savedLong, CultureInfo.InvariantCulture);
                    break;

                case double d:
                    value = UserDefaults.DoubleForKey(key);
                    break;

                case float f:
                    value = UserDefaults.FloatForKey(key);
                    break;

                case string s:
                    // the case when the string is not null
                    value = UserDefaults.StringForKey(key);
                    break;

                default:
                    // the case when the string is null
                    if (typeof(T) == typeof(string))
                    {
                        value = UserDefaults.StringForKey(key);
                    }
                    break;
                }
            }

            return((T)value);
        }