2016-09-17 29 views
1

我有一个仅包含一个元素SWIFT- IOS:NSUserDefaults的使用

在我的代码我该元素保存为“123”

此时此刻我想修改的元素的结构修改值以 “1000”

但是我的元素永远不会改变

struct Key { 
    static let Keyone = "" 
} 

等于 “123”

let defaults = NSUserDefaults.standardUserDefaults() 
     defaults.setValue("123", forKey: Key.Keyone) 
     defaults.synchronize() 

当我打印了使用

defaults.stringForKey(Key.Keyone) 

一切都很好,输出为123

现在试图做同样的改变Keyone,但它不工作

let defaults = NSUserDefaults.standardUserDefaults() 
     defaults.setValue("1000", forKey: Key.Keyone) 
     defaults.synchronize() 
defaults.stringForKey(Key.Keyone) 

输出仍然是123

那么什么可能是这个问题的最佳解决方案e

+0

使用.SET代替的setValue 和对象,而不是stringForKey 按照此[链接](https://www.hackingwithswift.com/read/12/2/reading-and-writing-basics- nsuserdefaults)以获取更多信息 – mustafa96m

+0

@ mustafa96m,正如我们所假设的那样,Anthony的代码位于Swift 2中,所以您的建议对此无济于事。 – pedrouan

+1

你的'Keyone'是空的,用它设置一些字符串键 –

回答

-1

像这样使用;

 let defaults = NSUserDefaults.standardUserDefaults() 
     defaults.setInteger(1000, forKey: Key.Keyone) 
     defaults.synchronize() 
     defaults.integerForKey(Key.Keyone) 

不是 “1000” 使用1000 int值,并使用setInteger为整数

使用范例;

let defaults = NSUserDefaults.standardUserDefaults() 
//Set 
defaults.setInteger(yourInt, forKey: "intKey") 
//Get 
defaults.integerForKey("intKey") 
+1

这不是一个解决方案 – Vyacheslav

+0

@Vyacheslav整数需要setInteger。我解释这一点 – SwiftDeveloper

0

基本上NSUserDefaults中的键用于唯一标识存储的数据。你正试图保存你的数据并且清空字符串。你需要做这样的事情。

struct Key { 
static let Keyone = "someKey" 
}