XmlSerializer с новыми перечислимыми значениями

Ага, NSUserDefaults, кажется, работает, и прост в использовании, , но не безопасен в малейшем :

password IBOutlet для UITextField.

- (void)viewWillAppear:(BOOL)animated
{
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
    NSString *pword = [prefs objectForKey:@"password"];
    password.text = uname;
}

- (void)viewWillDisappear:(BOOL)animated{
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
    [prefs setObject:password.text forKey:@"password"];
}

пароль хранится в простом тексте в plist, таким образом, это было бы довольно легко для кого-то еще к доступу.. но это полезно для хранения нечувствительных настроек.

я закончил тем, что использовал это для хранения имя пользователя поле и сохранил пароль с помощью код связки ключей SFHFKeychainUtils из ответа в августе.

5
задан scott 25 October 2009 в 16:20
поделиться

3 ответа

К сожалению, нет способа контролировать десериализацию значений перечисления ... В качестве обходного пути вы можете сериализовать значения перечисления в виде строки:

[XmlIgnore]
public MyEnum MyProperty { get; set; }

[XmlElement("MyProperty")]
public string MyPropertyAsString
{
    get
    {
        return EnumToString(MyProperty);
    }
    set
    {
        MyProperty = StringToEnum<MyEnum>(value);
    }
}

public T StringToEnum<T>(string stringValue)
{
    // Manually convert the string to enum, ignoring unknown values
}

public string EnumToString<T>(T enumValue)
{
    // Convert the enum to a string
}
11
ответ дан 18 December 2019 в 06:23
поделиться

Вы можете сделать так, чтобы производящее приложение знало о нескольких версиях потребляющих приложений и использовало разные пространства имен, как XML, так и C #, для каждой из версий. Между приложениями должна быть некоторая предварительная координация, чтобы договориться о схеме, которой они будут следовать, и существует дополнительная ответственность на производящее приложение, чтобы оно оставалось обратно совместимым со всеми возможными активными потребительскими приложениями.

1
ответ дан 18 December 2019 в 06:23
поделиться

используйте настраиваемую сериализацию c # с управлением версиями объектов; это позволит вам справиться с различными ситуациями, которые возникают, когда одно приложение обновляется, а другое нет

0
ответ дан 18 December 2019 в 06:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: