設定束 Setting Bundle 的使用

2021-06-21 03:59:09 字數 3336 閱讀 5079

ios應用程式儲存資訊的方式很多,但主要有如下3種:

1. 單例類nsuserdefaults:資料通過鍵/值對的方式儲存在nsuserdefaults單例中。

2. 設定束(settings bundle):提供了乙個通過ios應用程式settings對應用程式進行配置的介面,資料儲存在ios系統的設定選單。

3. 直接訪問檔案系統:使用檔案管理類nsfilemanager來實現。

這次主要介紹下設定束的情況:

如下圖:

新增成功後的效果為如下圖:

編譯工程,應該能正常執行起來了。

好下面解釋下settings.bundle:

在settings.bundle 中en.iproj為多語言的,暫時不管。我們主要關心的是root.plist檔案。 這個檔案決定了我們儲存的資料在設定選單裡面顯示的方式,它有7個型別:

group

-- 編組。鍵為psgroupspecifier,首選項邏輯編組的標題。

text field

-- 文字框。鍵為pstextfieldspecifier,可編輯的文字字串。

title

-- 標題。鍵為pstitlevaluespecifier,唯讀文字字串。

toggle switch

-- 開關。鍵為pstoggleswitchspecifier,開關按鈕。

slide

-- 滑塊。鍵為pssliderspecifier,取值位於特定範圍內的滑塊。

multivalue

-- 多值。鍵為psmultivaluespecifier,下拉式列表。

child pane

-- 子窗格。鍵為pschildpanespecifier,子首選項頁。

一些型別的特定屬性說明:

text field

text field is secure -- 是否為安全文字。如果設定為yes,則內容以圓點符號出現。

autocapitalization style -- 自動大寫。有四個值: none(無)、sentences(句子首字母大寫)、words(單詞首字母大寫)、all characters(所有字母大寫)。

autocorrection style -- 自動糾正拼寫,如果開啟,你輸入乙個不存在的單詞,系統會劃紅線提示。有三個值:default(預設)、no autocorrection(不自動糾正)、autocorrection(自動糾正)。

keyboard type -- 鍵盤樣式。有五個值:alphabet(字母表,預設)、numbers and punctuation(數字和標點符號)、number pad(數字面板)、url(比alphabet多出了.com等網域名稱字尾)、email address(比alphabet多出了@符合)。

toggle switch

value for on -- 當開關置為on時,取得的字串值。

value for off -- 當開關置為off時,取得的字串值。

slider

minimum value -- 最小值,number型別。

maximum value -- 最大值,number型別。

min value image filename -- 最小值那一端的。

max value image filename -- 最大值那一端的。

p.s.大小必須為21*21,並且要放在settings.bundle包內(在finder裡顯示包內容,然後貼上)。

multivalue

values -- 值的集合。

titles -- 標題的集合,與值一一對應。

child pane

filename -- 子plist的檔名。

這裡的item0非常重要,

item0的型別是group,對應的是乙個分組**型別,然後下面的item都在這個分組**中,直到遇到下乙個group。(即圖二中為乙個組,需要新增下一組就要在加入group型別)

在我們這個例項中:(設定乙個組,第一項為輸入名稱的編輯框,第二項為yes/no的開關變數,第三項為slider的滑動)

item0:關鍵設定type:group,顯示標題為:group。

item1:關鍵設定type:text field ,title:name, identifier:name_preference, 設定identifier就是通過objectforkey來查詢資料。

同理與item2,item3主要設定(type,title,identifier),如下圖效果:

執行後在設定選單中會出現testsystemset的項。進入如下圖效果

使用:寫入預設值:

- (void)registerdefaultsfromsettingsbundle

@"root.plist"

]];

nsarray *preferences = [settings objectforkey:@"preferencespecifiers"];

nsmutabledictionary*defaultstoregister = [[nsmutabledictionaryalloc] initwithcapacity:[preferences count]];

for(nsdictionary *prefspecification in preferences)

}[[nsuserdefaults standarduserdefaults] registerdefaults:defaultstoregister]; }

// 獲取資料

-(void)gettestvalue

[self

registerdefaultsfromsettingsbundle];

[self gettestvalue];

// add the view controller's view to the window and display.

[window

addsubview

:viewcontroller.

view];

[window

makekeyandvisible];

returnyes; }

參考:

執行緒束分化

在英偉達gpu中,執行緒束是最小的執行單位,執行緒束的大小代表了乙個sm同時併發的執行緒數目。一般在sm實際排程中,sm獲取到當前指令後,會將該指令廣播到sm內所有的硬體core中即sm中,這樣做可以減少從記憶體中讀取指令的次數,提高效率。而在cpu中,每個核是單獨執行乙個任務,在執行前每個核各自從...

線束測試儀 汽車線束檢測應用

線束測試儀是汽車線束檢測行業的新寵。1 線束測試儀全程電腦操作和運轉,節省了大量的人力。我們只需要將需要進行檢測的線束接通到汽車線束檢測儀上,就可以一鍵自動完成檢測,並且在顯示器上顯示出存在問題的線束,直接將問題排查出來。2 汽車線束測試儀速度非常快。傳統意義上的檢測一般是借助萬用表等儀器逐個地將線...

CUDA 執行緒束分化

1.執行緒束分化 執行緒束是sm中基本的執行單元。當乙個執行緒塊的網格被啟動後,網格中的執行緒塊分布在sm中。一旦執行緒塊被排程到乙個sm上,執行緒塊中的執行緒會被進一步劃分為執行緒束。乙個執行緒束由32個連續的執行緒組成,在乙個執行緒束中,所有的執行緒按照單指令多執行緒 simt 方式執行 也就是...