2017-07-26 72 views
1

我想做一个设置和获取方法从这个数据管理器类,从字典,我不知道如何插入字典的值在集合和get方法(我已经改变它从一个array to Dic)谢谢如何在swift中以set方法呈现字典?

class DataManager { 

    private static var sharedInstance: DataManager? 
    private var recordsArray: [[String:String]] = [] 

    private let defaults = UserDefaults.standard 

    let userRecord: String = "userRecord"; 

    private init(){} 

    public static func getInstance()-> DataManager{ 
     if DataManager.sharedInstance == nil { 
      DataManager.sharedInstance = DataManager() 
     } 
     return DataManager.sharedInstance! 
    } 


    //here is my problem - set and get methods 
    //I don't know how to move the parameters 

    public func setRecordsArray([_:String,path:String]) { 
     self.recordsArray.append(?); 
     defaults.set(self.recordsArray, forKey: self.userRecord) 
    } 
    // again the same problem 

    public func getRecordsArray() -> [String] { 
     let a = self.defaults.array(forKey: self.userRecord); 
     return a as! [String];  
    } 
} 
+0

你的意思是如何访问你的函数体[_:字符串:字符串,路径] ? –

+0

是@davidPasztor – Moran

回答

0

回答你的问题的关键是要知道你想设置和获取的变量的类型。

在这种情况下,recordsArray变量是字符串值和键的字典的数组:[[字符串:字符串]]

所以,通过该参数的一种方法是创建相同类型的变量因为它应该被设置:

public func setRecordsArray(array:[[String:String]]) { 
     self.recordsArray = array 
     defaults.set(self.recordsArray, forKey: self.userRecord) 
    } 

它简单地更新self.recordsArray变量的值,并设置在用户的默认值的值。

get方法的工作原理类似,但它返回的变量应该返回相同的类型。

一个?在返回添加,因为如果没有保存用户defalts,该方法返回nil:

public func getRecordsArray() -> [[String:String]]?{ 
     if let array = defaults.object(forKey: self.userRecord) as? [[String:String]]{ 
      self.recordsArray = array 
      return array 
     } 
     return nil 
    } 

此外,你可以为数组内的嵌入元件一套方法。 在这种情况下,参数类型必须像[字符串:字符串],这个数组的元素类型:

public func setRecord(record:[String:String]) { 
     if let array = defaults.object(forKey: self.userRecord) as? [[String:String]]{ 
      self.recordsArray = array 
      self.recordsArray.append(record) 
      defaults.set(self.recordsArray, forKey: self.userRecord) 
     } else{ 
      self.recordsArray.append(record) 
      defaults.set(self.recordsArray, forKey: self.userRecord) 
     } 
    } 
+0

非常感谢你 - 这是答案! – Moran

相关问题