iOS開發——資料持久化Swift篇&SettingBundle

來源:互聯網
上載者:User

標籤:

SettingBundle

 

  1 import UIKit  2   3 class ViewController: UIViewController {  4       5     var userDefault = NSUserDefaults.standardUserDefaults()  6       7     @IBOutlet weak var textField: UITextField!  8       9     @IBAction func btnSave(sender: UIButton) { 10         updateUserDefaults() 11     } 12      13     @IBAction func btnLoad(sender: UIButton) { 14         var text = userDefault.stringForKey("textField") 15         textField.text = text 16     } 17      18     override func viewDidLoad() { 19         super.viewDidLoad() 20          21         /** 22         設定應用: 23         建立一個檔案:resource中的setting bundle-----運行之後直接在設定裡面開啟。拉到最後嗎久能看到 24         */ 25         /** 26         好下面解釋下Settings.bundle: 27          28         在Settings.bundle 中en.iproj為多語言的,暫時不管。我們主要關心的是Root.plist檔案。 這個檔案決定了我們儲存的資料在設定菜單裡面顯示的方式,它有7個類型: 29          30         Group -- 編組。鍵為PSGroupSpecifier,喜好設定邏輯編組的標題。 31         Text Field -- 文字框。鍵為PSTextFieldSpecifier,可編輯的文本字串。 32         Title -- 標題。鍵為PSTitleValueSpecifier,唯讀文本字串。 33         Toggle Switch -- 開關。鍵為PSToggleSwitchSpecifier,開關按鈕。 34         Slide -- 滑塊。鍵為PSSliderSpecifier,取值位於特定範圍內的滑塊。 35         Multivalue -- 多值。鍵為PSMultiValueSpecifier,下拉式列表。 36         Child Pane -- 子窗格。鍵為PSChildPaneSpecifier,子喜好設定頁。 37          38         一些類型的特定屬性說明: 39          40         Text Field 41          42         Text Field is Secure -- 是否為安全文本。如果設定為YES,則內容以圓點符號出現。 43          44         Autocapitalization Style -- 自動大寫。有四個值: None(無)、Sentences(句子首字母大寫)、Words(單字首大寫)、All Characters(所有字母大寫)。 45          46         Autocorrection Style -- 自動糾正拼字,如果開啟,你輸入一個不存在的單詞,系統會劃紅線提示。有三個值:Default(預設)、No Autocorrection(不自動糾正)、Autocorrection(自動糾正)。 47          48         Keyboard Type -- 鍵盤樣式。有五個值:Alphabet(字母表,預設)、Numbers and Punctuation(數字和標點符號)、Number Pad(數字面板)、URL(比Alphabet多出了.com等網域名稱尾碼)、Email Address(比Alphabet多出了@符合)。 49          50         Toggle Switch 51          52         Value for ON -- 當開關置為ON時,取得的字串值。 53          54         Value for OFF -- 當開關置為OFF時,取得的字串值。 55          56         Slider 57          58         Minimum Value -- 最小值,Number類型。 59          60         Maximum Value -- 最大值,Number類型。 61          62         Min Value Image Filename -- 最小值那一端的圖片。 63          64         Max Value Image Filename -- 最大值那一端的圖片。 65          66         P.s.圖片大小必須為21*21,並且要放在Settings.bundle包內(在Finder裡顯示包內容,然後粘貼)。 67          68         Multivalue 69          70         Values -- 值的集合。 71          72         Titles -- 標題的集合,與值一一對應。 73          74         Child Pane 75          76         Filename -- 子plist的檔案名稱。 77         這裡的Item0非常重要,Item0的類型是Group,對應的是一個分組表格類型,然後下面的Item都在這個分組表格中,直到遇到下一個Group。(即圖二中為一個組,需要添加下一組就要在加入Group類型) 78          79         在我們這個執行個體中:(設定一個組,第一項為輸入名稱的編輯框,第二項為YES/NO的開關變數,第三項為Slider的滑動) 80          81         Item0:關鍵設定type:Group,顯示標題為:Group。 82          83         Item1:關鍵設定type:Text Field ,Title:Name, Identifier:name_preference, 設定Identifier就是通過ObjectForKey來尋找資料。 84         */ 85          86         loadDefaults() 87          88         getUserDefaults() 89          90     } 91      92     //載入預設的程式涉敘應用設定 93     func loadDefaults() { 94         //setting Bundle 95         var settingBundle = NSBundle.mainBundle().pathForResource("Settings", ofType: "bundle") 96         if settingBundle == nil { 97             return 98         } 99         100         //Root101         var root = NSDictionary(contentsOfFile: settingBundle!.stringByAppendingPathComponent("Root.plist"))102         //字典中擷取值103         var prefrences: AnyObject? = root?.objectForKey("PreferenceSpecifiers")  as? Array<NSDictionary>104         //將數組中的字典內容放到一個字典包裡面105         var defaultsToRegister = NSMutableDictionary(capacity: root!.count)106         107         for prefrence in prefrences {   //‘AnyObject?‘ dose not have a member named ‘Generator‘108             var key = prefrence.objectForkey("Key") as String?109             if key != nil {110                 defaultsToRegister.setValue(prefrences.objectForKey("DefaultValue"), forKey: key)111             }112         }113         NSUserDefaults.standardUserDefaults().registerDefaults(defaultsToRegister as [NSObject : AnyObject])114     }115 116     override func didReceiveMemoryWarning() {117         super.didReceiveMemoryWarning()118         // Dispose of any resources that can be recreated.119     }120 121     //讀取122     func getUserDefaults() {123         var defaults = NSUserDefaults.standardUserDefaults()124         var title = defaults.objectForKey("name_preference") as! String125         textField.text = title126     }127     128     //更改系統設定129     func updateUserDefaults() {130         var defaults = NSUserDefaults.standardUserDefaults()131         defaults.setBool(false, forKey: "enabled_preference")132         defaults.synchronize()133     }134 }

 

 

iOS開發——資料持久化Swift篇&SettingBundle

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.