我知道NSUserDefaults
用于保存/恢复 用户 偏好设置。 应用 的等效类是什么?例如,应用程序可能具有“最后运行”字段;或者它可能有一个字段,用于在应用程序级别使用的设备的唯一标识。
我的目的是将应用程序的设置(不是用户的设置)保留在设置应用程序之外,而不是在iTunes,Time Machine,{whatever}中备份这些设置。
我为Java和C#带来了很多噪音,但对iOS / iPhone / iPad来说并不多。
答案 0 :(得分:71)
NSUserDefaults
可用于您所要求的内容。
if (![[NSUserDefaults standardUserDefaults] boolForKey:@"shownPrompt"]) {
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"shownPrompt"];
// Show your prompt or whatever
}
这是一个有效的代码片段。如果键为false,则将其设置为true并显示提示。下次运行此代码时,该键已经为true,因此不会显示提示。
NSUserDefaults
特定于当前设备上的当前应用,并且类似于NSMutableDictionary
,因为它是一个键值系统,区别在于不是实例化您自己的,而是适用于整个应用的通用共享实例,在应用退出时不会被删除。
NSUserDefaults
非常适合保存诸如是否显示某些内容,上次运行日期等内容。请阅读此处的文档:https://developer.apple.com/documentation/foundation/userdefaults
不要被'用户偏好'部分推迟。您可以使用它来保存您想要的任何内容(只要它可以或可以转换为实现NSObject
的{{1}},这基本上意味着<NSCoding>
,NSString
,{ {1}},NSDictionary
,NSArray
,NSNumber
,UITextField
,int
等。)
只是为了澄清,在float
中放入的内容不,在任何情况下,都会自动显示在“设置”应用中。它将完全保密并隐藏起来。要在“设置”中显示某些内容,您需要向应用添加“设置”分发包,并为要在“设置”应用中显示的每个值手动添加键。
答案 1 :(得分:11)
如果你可以通过NSUserDefaults存储价值,那么也可以存储应用程序首选项。
或在项目中添加settings.plist并阅读(之后您不会更改的内容)
你可以使用像。,
+ (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"];
}
答案 2 :(得分:0)
很难说出你在问什么。听起来NSUserDefaults
就是您所寻找的,但您声称自己已经意识到这一点。那么你的问题是什么?