STRUCT数组到UserDefaults

时间:2017-03-14 04:26:02

标签: swift struct nsarray nsuserdefaults

我有一个自定义的Struct类来保存卡路里,脂肪,碳水化合物和蛋白质。

每次用户输入我将其放入变量

的数据
 var theArray : NSMutableArray = []

struct CFCPstruct {
    let calories : Int!
    let fats : Int!
    let carbs : Int!
    let protein: Int!
    init(Calories: Int, Fats: Int, Carbs: Int, Protein: Int) {
        self.calories = Calories
        self.fats = Fats
        self.carbs = Carbs
        self.protein = Protein
    }
}

 let addLog = [CFCPstruct(Calories: totalCalories, Fats: totalFats, Carbs: totalCarbs, Protein: totalProtein)]

现在我还创建了一个存储所有内容的数组。然后我需要将所有值存储到数组中,然后将其存储到UserDefaults。

然后我需要调用用户默认调用数组[0]让我们说,然后调用每个卡路里,碳水化合物,...类似于log.calories // theology.carbs等

2 个答案:

答案 0 :(得分:2)

为了能够使用<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"/> <title>Counter</title> <link rel="stylesheet" type = "text/css" href="Counter.css"/> </head> <body> <div> <button id ="button">Increment</button><br/> </div> <p id = "counter"></p> <p id = "demo"></p> <script> var counter = 0; var x = document.getElementById("button"); x.addEventListener("click",button1,false); function button1 () { counter ++; document.getElementById("counter").innerHTML ="Counter ="+counter; } </script> </body> </html> ,对象必须是一个类。但由于所有值都符合属性列表,因此您可以添加变量NSCoding和相应的初始化程序。

首先从不在Swift中使用dictionaryRepresentation从不将变量声明为隐式展开的可选项,使用非可选的初始化程序进行初始化。

NSMutableArray

现在您可以从中读取数据并写入用户默认值。

var theArray = [CFCPstruct]()

struct CFCPstruct  {
    let calories : Int
    let fats : Int
    let carbs : Int
    let protein: Int

    init(calories: Int, fats: Int, carbs: Int, protein: Int) {
        self.calories = calories
        self.fats = fats
        self.carbs = carbs
        self.protein = protein
    }

    init(dictionary : [String:Int]) {
        self.calories = dictionary["calories"]!
        self.fats = dictionary["fats"]!
        self.carbs = dictionary["carbs"]!
        self.protein = dictionary["protein"]!
    }

    var dictionaryRepresentation : [String:Int] {
        return ["calories" : calories, "fats" : fats, "carbs" : carbs, "protein" : protein]
    }
}

答案 1 :(得分:0)

现在,如果您已创建数据数组,则可以将其保存为: -

  

让yourArrayOfDict = [[&#34; a&#34;:&#34; Smith&#34;,&#34; b&#34;:&#34; UK&#34;],[&#34; a&#34;:&#34; Paul&#34;,&#34; b&#34;:   &#34; UAE&#34;]]

斯威夫特3:

let defaults = UserDefaults.standard
defaults.set(yourArrayOfDict, forKey: "customKey_SavedArray")

现在,您通过以下方式访问

let s = defaults.value(forKey: "customKey_SavedArray")
print(s)

您将获得s中的值,因此您可以print(s)确保保存数组。

Swift 2:

let defaults = NSUserDefaults.standardUserDefaults()
defaults.setValue(yourArrayOfDict, forKey: "customKey_SavedArray")

访问

let s = defaults.objectForKey("customKey_SavedArray") as? [[String:AnyObject]]

现在,这里的s将值作为数据的数组保存,所以没有你可以按照你的说法访问它们, let first_item = s[0], 或者,您可以使用 for in 循环遍历数组中的项目。