Написать в настройки в Swift
Я создал приложение с набором параметров, и его можно изменить. Чтение из настроек пакета завершено. Я использую приведенный ниже код.
let defs: NSUserDefaults = NSUserDefaults.standardUserDefaults()
defs.synchronize()
var settingsBundle: NSString = NSBundle.mainBundle().pathForResource("Settings", ofType: "bundle")!
if(settingsBundle.containsString("")){
NSLog("Could not find Settings.bundle");
return;
}
var settings: NSDictionary = NSDictionary(contentsOfFile: settingsBundle.stringByAppendingPathComponent("Root.plist"))!
var preferences: NSArray = settings.objectForKey("PreferenceSpecifiers") as! NSArray
var defaultsToRegister: NSMutableDictionary = NSMutableDictionary(capacity: preferences.count)
for prefSpecification in preferences {
if (prefSpecification.objectForKey("Key") != nil) {
let key: NSString = prefSpecification.objectForKey("Key")! as! NSString
if !key.containsString("") {
let currentObject: AnyObject? = defs.objectForKey(key as! String)
if currentObject == nil {
// not readable: set value from Settings.bundle
let objectToSet: AnyObject? = prefSpecification.objectForKey("DefaultValue")
var objectKey : String = key as! String
var finalObject : String = objectToSet as! String
defaultsToRegister.setObject(finalObject, forKey: objectKey)
}else{
//already readable: don't touch
var objectKey : String = key as! String
var finalObject : String = currentObject as! String
defaultsToRegister.setObject(finalObject, forKey: objectKey)
}
}
}
}
defs.registerDefaults(defaultsToRegister as [NSObject : AnyObject])
defs.synchronize()
Те же настройки могут быть обновлены само приложение. Но как я могу записать обновленные значения в комплект настроек? В этомссылка на сайт, принятый ответ говорит, что это возможно, используяNSUserDefaults
, Но я не мог, кто-то может помочь?
РЕДАКТИРОВАТЬ Пожалуйста, проверьте ниже для получения дополнительной информации:
{
PreferenceSpecifiers = (
{
Title = Group;
Type = PSGroupSpecifier;
},
{
DefaultValue = Test1;
Key = "multi_values";
Title = "Multiple Values";
Titles = (
FIrst,
Second,
Third
);
Type = PSMultiValueSpecifier;
Values = (
FirstValue,
SecondValue,
ThirdValue
);
}
);
StringsTable = Root;
}
У меня есть пакет настроек, как выше формат, и я могу прочитать его в приложении. Но как я могу обновить этот выбор нескольких значений в соответствии с изменениями в приложении? Я использовал следующий код для обновлениязаглавие значение.
var settings: NSDictionary = NSDictionary(contentsOfFile: settingsBundle.stringByAppendingPathComponent("Root.plist"))!
var preferences: NSArray = settings.objectForKey("PreferenceSpecifiers") as! NSArray
preferences.objectAtIndex(1).setValue("MutipleValue is updated", forKey: "Title")
settings.setValue(preferences, forKey: "PreferenceSpecifiers")
settings.writeToFile(settingsBundle.stringByAppendingPathComponent("Root.plist"), atomically: false)