簡體   English   中英

在 iOS 上保存(私有)應用程序設置?

[英]Save (Private) Application Settings on iOS?

我知道NSUserDefaults用於保存/恢復用戶首選項。 應用程序的等效 class 是多少? 例如,應用程序可能有一個“上次運行”字段; 或者它可能具有用於在應用程序級別使用的設備的唯一標識的字段。

我的意圖是將應用程序的設置(不是用戶的設置)保留在設置應用程序之外,而不是在 iTunes、Time Machine、{whatever} 中備份這些設置。

對於 Java 和 C#,我收到了很多噪音,但對於 iOS/iPhone/iPad 來說並不多。

NSUserDefaults可用於您所要求的。

if (![[NSUserDefaults standardUserDefaults] boolForKey:@"shownPrompt"]) {
    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"shownPrompt"];
    // Show your prompt or whatever
}

這是一個有效的代碼片段。 如果鍵為假,則將其設置為真並顯示提示。 下次運行此代碼時,密鑰已經為 true,因此不會顯示提示。

NSUserDefaults特定於當前設備上的當前應用程序,並且類似於NSMutableDictionary ,因為它是一個鍵值系統,不同之處在於它不是實例化您自己的,而是為您的整個應用程序提供一個通用共享實例,這不會應用退出時不會被刪除。

NSUserDefaults非常適合保存諸如是否顯示某些內容、上次運行的日期等內容。在此處閱讀文檔: https://developer.apple.com/documentation/foundation/userdefaults

不要被“用戶偏好”部分推遲。 您可以使用它來保存您想要的任何內容(只要它是或可以轉換為實現<NSCoding>NSObject ,這基本上意味着NSStringNSDictionaryNSArrayNSNumberUITextFieldintfloatbool等) .

澄清一下,您放入NSUserDefaults的內容在任何情況下都不會自動出現在“設置”應用程序中。 它將完全保密和隱藏。 要在設置中顯示某些內容,您需要將設置包添加到您的應用程序,並為您希望在設置應用程序中顯示的每個值手動添加鍵。

如果您可以通過 NSUserDefaults 存儲值,那么存儲應用程序首選項也很好。

或在您的項目中添加 settings.plist 並閱讀(您以后不會更改的內容)

你可以使用like.,

+ (NSDictionary*)getBundlePlist:(NSString *)plistName
{
    NSString *errorDesc = nil;
    NSPropertyListFormat format;
    NSString *plistPath = [[NSBundle mainBundle] pathForResource:plistName ofType:@"plist"];
    NSData *plistXML = [[NSFileManager defaultManager] contentsAtPath:plistPath];
    NSDictionary *temp = (NSDictionary *)[NSPropertyListSerialization
                                          propertyListFromData:plistXML
                                          mutabilityOption:NSPropertyListMutableContainersAndLeaves           
                                          format:&format errorDescription:&errorDesc];
    return temp;
}

+ (id) getPropValue:(NSString *)PropertyName
{   // I am supposing you had add your app preferences on settings.plist.
    return [[Property getBundlePlist:@"settings"] objectForKey:PropertyName];
    //here Property is my class name, then you can use value by 
    //NSString *value = [Property getPropValue:@"setting1"];
}

很難說出你在問什么。 聽起來NSUserDefaults是您正在尋找的東西,但您聲稱您已經知道它。 那么你的問題是什么?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM