Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Swift中保存到NSUserDefaults时,NSDictionary变为NSCFString_Swift_Nsuserdefaults - Fatal编程技术网

在Swift中保存到NSUserDefaults时,NSDictionary变为NSCFString

在Swift中保存到NSUserDefaults时,NSDictionary变为NSCFString,swift,nsuserdefaults,Swift,Nsuserdefaults,NSDictionary在保存到NSUserDefaults时变为NSCFString: class SecondViewController: UIViewController { @IBOutlet var questionforsave: UITextField! @IBOutlet var answerforsave: UITextField! var answersSaved = [String:String]() @IBAction func s

NSDictionary在保存到NSUserDefaults时变为NSCFString:

class SecondViewController: UIViewController {

    @IBOutlet var questionforsave: UITextField!
    @IBOutlet var answerforsave: UITextField!

    var answersSaved = [String:String]()

    @IBAction func savePressed(sender: AnyObject) {

        if questionforsave.text.isEmpty || answerforsave.text.isEmpty{

            let alert = UIAlertView()
            alert.title = "Empty fields"
            alert.message = "Please Enter Text In Both Text Fields"
            alert.addButtonWithTitle("Ok")
            alert.show()
        }else{

            println("is ok")
            var answerSave = answerforsave.text
            var questionSave = questionforsave.text


            answersSaved[questionSave] = answerSave

            let alert = UIAlertView()
            alert.title = "Success!"
            alert.message = "It worked!"
            alert.addButtonWithTitle("Awesome!")
            alert.show()

            NSUserDefaults.standardUserDefaults().setObject(answersSaved, forKey: "answersSaved")
            println(answersSaved)


        }


    }


    override func viewDidLoad() {
        super.viewDidLoad()

        println(answersSaved)



        if NSUserDefaults.standardUserDefaults().objectForKey("answersSaved") != nil {
            answersSaved = NSUserDefaults.standardUserDefaults().objectForKey("answersSaved") as! [String:String]

        }else{
            println("No Defaults")
        }




    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
        self.view.endEditing(true)
    }
    func textFieldShouldReturn(textField: UITextField!) -> Bool {
        //do the stuff here
        resignFirstResponder()
        return true
    }


}
class SecondViewController:UIViewController{
@IBOutlet var questionforsave:UITextField!
@IBOutlet var answerforsave:UITextField!
var answersaved=[String:String]()
@iAction func savePressed(发件人:AnyObject){
如果问题为save.text.isEmpty | |回答为save.text.isEmpty{
let alert=UIAlertView()
alert.title=“空字段”
alert.message=“请在两个文本字段中输入文本”
alert.addButtonWithTitle(“确定”)
alert.show()
}否则{
println(“没问题”)
var answerSave=answerforsave.text
var questionSave=questionforsave.text
回答已保存[问题保存]=回答已保存
let alert=UIAlertView()
alert.title=“成功!”
alert.message=“成功了!”
alert.addButtonWithTitle(“太棒了!”)
alert.show()
NSUserDefaults.standardUserDefaults().setObject(answersSaved,forKey:“answersSaved”)
println(答复已保存)
}
}
重写func viewDidLoad(){
super.viewDidLoad()
println(答复已保存)
如果NSUserDefaults.standardUserDefaults().objectForKey(“answersSaved”)!=nil{
answersSaved=NSUserDefaults.standardUserDefaults().objectForKey(“answersSaved”)as![String:String]
}否则{
println(“无默认值”)
}
}
重写函数didReceiveMemoryWarning(){
超级。我收到了记忆警告()
//处置所有可以重新创建的资源。
}
覆盖func touchesBegined(触摸:设置,withEvent事件:UIEvent){
self.view.endEditing(true)
}
func textField应该返回(textField:UITextField!)->Bool{
//在这里做事
辞职第一响应者()
返回真值
}
}
您正在将字符串
“answersSaved”
写入
NSUserDefaults
。我猜你的意思是回答已保存

您正在将字符串
“answersSaved”
写入
NSUserDefaults
。我猜你的意思是回答已保存

您正在将字符串
“answersSaved”
写入
NSUserDefaults
。我猜你的意思是回答已保存


您正在将字符串
“answersSaved”
写入
NSUserDefaults
。我猜您的意思是
answersaved

当您将词典加载到nsuser默认值时,您应该这样做:

NSUserDefaults.standardUserDefaults().setObject(answersSaved, forKey: "answersSaved")
这会将其保存为通用NSObject。如果要通过读取数据,请使用以下命令:

answersSaved = NSUserDefaults.standardUserDefaults().dictionaryForKey("answersSaved")

这应该指定对象是字典

当您将字典加载到NSUserDefaults时,您应该这样做:

NSUserDefaults.standardUserDefaults().setObject(answersSaved, forKey: "answersSaved")
这会将其保存为通用NSObject。如果要通过读取数据,请使用以下命令:

answersSaved = NSUserDefaults.standardUserDefaults().dictionaryForKey("answersSaved")

这应该指定对象是字典

当您将字典加载到NSUserDefaults时,您应该这样做:

NSUserDefaults.standardUserDefaults().setObject(answersSaved, forKey: "answersSaved")
这会将其保存为通用NSObject。如果要通过读取数据,请使用以下命令:

answersSaved = NSUserDefaults.standardUserDefaults().dictionaryForKey("answersSaved")

这应该指定对象是字典

当您将字典加载到NSUserDefaults时,您应该这样做:

NSUserDefaults.standardUserDefaults().setObject(answersSaved, forKey: "answersSaved")
这会将其保存为通用NSObject。如果要通过读取数据,请使用以下命令:

answersSaved = NSUserDefaults.standardUserDefaults().dictionaryForKey("answersSaved")

这应该指定对象是一个字典

您的问题是您正在设置一个字符串,然后尝试检索字典,但是我建议使用
,如果让
检索字典,然后可以选择将其强制转换为
[string:string]

var answersSaved = [String: String]()

override func viewDidLoad() {
    super.viewDidLoad()

    if let answersFromDefaults = NSUserDefaults.standardUserDefaults().dictionaryForKey("answersSaved") as? [String: String] {
        answersSaved = answersFromDefaults
    } else {
        // Failed to retrieve value from NSUserDefaults
    }

    answersSaved = ["test": "a"] // Set answersSaved somewhere in your code
}

@IBAction func saveButtonPressed(sender: UIBarButtonItem) {
    NSUserDefaults.standardUserDefaults().setObject(answersSaved, forKey: "answersSaved")
}

您的问题是您正在设置一个字符串,然后尝试检索词典,但我建议使用
if let
检索词典,然后可以选择将其强制转换为
[string:string]

var answersSaved = [String: String]()

override func viewDidLoad() {
    super.viewDidLoad()

    if let answersFromDefaults = NSUserDefaults.standardUserDefaults().dictionaryForKey("answersSaved") as? [String: String] {
        answersSaved = answersFromDefaults
    } else {
        // Failed to retrieve value from NSUserDefaults
    }

    answersSaved = ["test": "a"] // Set answersSaved somewhere in your code
}

@IBAction func saveButtonPressed(sender: UIBarButtonItem) {
    NSUserDefaults.standardUserDefaults().setObject(answersSaved, forKey: "answersSaved")
}

您的问题是您正在设置一个字符串,然后尝试检索词典,但我建议使用
if let
检索词典,然后可以选择将其强制转换为
[string:string]

var answersSaved = [String: String]()

override func viewDidLoad() {
    super.viewDidLoad()

    if let answersFromDefaults = NSUserDefaults.standardUserDefaults().dictionaryForKey("answersSaved") as? [String: String] {
        answersSaved = answersFromDefaults
    } else {
        // Failed to retrieve value from NSUserDefaults
    }

    answersSaved = ["test": "a"] // Set answersSaved somewhere in your code
}

@IBAction func saveButtonPressed(sender: UIBarButtonItem) {
    NSUserDefaults.standardUserDefaults().setObject(answersSaved, forKey: "answersSaved")
}

您的问题是您正在设置一个字符串,然后尝试检索词典,但我建议使用
if let
检索词典,然后可以选择将其强制转换为
[string:string]

var answersSaved = [String: String]()

override func viewDidLoad() {
    super.viewDidLoad()

    if let answersFromDefaults = NSUserDefaults.standardUserDefaults().dictionaryForKey("answersSaved") as? [String: String] {
        answersSaved = answersFromDefaults
    } else {
        // Failed to retrieve value from NSUserDefaults
    }

    answersSaved = ["test": "a"] // Set answersSaved somewhere in your code
}

@IBAction func saveButtonPressed(sender: UIBarButtonItem) {
    NSUserDefaults.standardUserDefaults().setObject(answersSaved, forKey: "answersSaved")
}
您可以选择将其转换为[String:String]字典

试试这个:

if let answersFromDefaults = NSUserDefaults.standardUserDefaults().dictionaryForKey("answersSaved") as?      [String: String] {
    answersSaved = answersFromDefaults
} else {
    // Failed to retrieve value from NSUserDefaults
}
您可以选择将其转换为[String:String]字典

试试这个:

if let answersFromDefaults = NSUserDefaults.standardUserDefaults().dictionaryForKey("answersSaved") as?      [String: String] {
    answersSaved = answersFromDefaults
} else {
    // Failed to retrieve value from NSUserDefaults
}
您可以选择将其转换为[String:String]字典

试试这个:

if let answersFromDefaults = NSUserDefaults.standardUserDefaults().dictionaryForKey("answersSaved") as?      [String: String] {
    answersSaved = answersFromDefaults
} else {
    // Failed to retrieve value from NSUserDefaults
}
您可以选择将其转换为[String:String]字典

试试这个:

if let answersFromDefaults = NSUserDefaults.standardUserDefaults().dictionaryForKey("answersSaved") as?      [String: String] {
    answersSaved = answersFromDefaults
} else {
    // Failed to retrieve value from NSUserDefaults
}

您应该包括您的代码
println()
answersaved和questionSave并添加到问题中。另外,您不应该使用
NSUserDefaults
作为数据模型。您甚至没有在此处保存任何
NSDictionary
,我希望您已经意识到了这一点;您正在为键
“answersSaved”
保存一个静态字符串(
“answersSaved”
)。是的,我会更正问题。您应该将代码
println()
answersSaved和问题保存并添加到问题中。另外,您不应该使用
NSUserDefaults
作为数据模型。您甚至没有在此处保存任何
NSDictionary
,我希望您已经意识到了这一点;您正在为键
“answersSaved”
保存一个静态字符串(
“answersSaved”
)。是的,我会更正问题。您应该将代码
println()
answersSaved和问题保存并添加到问题中。另外,您不应该使用
NSUserDefaults
作为数据模型。您甚至没有在此处保存任何
NSDictionary
,我希望您已经意识到了这一点;您正在为键
“answers”保存一个静态字符串(
“answersSaved”