Ios4 有没有办法使“不可见”的用户默认设置?

Ios4 有没有办法使“不可见”的用户默认设置?,ios4,Ios4,我的最后一个问题以前是走这条路,但我认为这需要一个新的问题,因为我现在想走这条路,而不是试图做我在另一个问题中试图做的事情 我想做的是在NSUserDefaults中有不可见的值。我不在乎苹果的指导方针,因为我的应用程序是针对越狱手机的。这就是我到目前为止所做的: 到目前为止,settings.bundle中的root.plist看起来像这样,因为我想稍后添加密码字段: first_launch是一个我不希望用户直接修改的值。顾名思义,一旦用户启动一次应用程序并通过我的小型配置向导,它的值将为f

我的最后一个问题以前是走这条路,但我认为这需要一个新的问题,因为我现在想走这条路,而不是试图做我在另一个问题中试图做的事情

我想做的是在NSUserDefaults中有不可见的值。我不在乎苹果的指导方针,因为我的应用程序是针对越狱手机的。这就是我到目前为止所做的:

到目前为止,settings.bundle中的root.plist看起来像这样,因为我想稍后添加密码字段:

first_launch是一个我不希望用户直接修改的值。顾名思义,一旦用户启动一次应用程序并通过我的小型配置向导,它的值将为false

正如您在plist中所看到的,first_launch的初始值为TRUE/YES,但以下代码:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSLog(@"%d", [defaults boolForKey:@"first_launch"]);
[[NSUserDefaults standardUserDefaults] setObject:someObject forKey:@"stringKey"];
总是告诉我它是0。如何在设置包中设置不可见的值?由于明显的原因,我不希望用户修改first_launch,我始终希望添加一个只能从应用程序本身访问的密码字段。

除非在Settings.bundle中添加默认值,否则默认值对设置应用程序不可见

您可以使用以下代码将信息存储在NSUserDefaults中:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSLog(@"%d", [defaults boolForKey:@"first_launch"]);
[[NSUserDefaults standardUserDefaults] setObject:someObject forKey:@"stringKey"];
因此,在应用程序代理中,尝试以下操作:

if([[NSUserDefaults standardUserDefaults] boolForKey:@"firstLaunch"] != NO){

  // Do first run stuff here...
  // Then, set the firstRun flag to NO
  [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"firstLaunch"];
}
编辑:

开关和分组数据等必须在代码中初始化或由用户设置,以便它们工作

编辑2:

您需要手动更改@firstLaunch键的值


该值一直返回0。我是否应该将第一次启动保存在某个地方以使其工作?目前它位于Root.plist.NSLog@%d,[[NSUserDefaults standardUserDefaults]boolforky:@first_launch;Prints 0会是一个更好的术语。我很抱歉。我不确定这是否是记录bool的正确方法,但除此之外,你为什么需要直接记录值?以查看它是否具有正确的值。但是,你是对的,显然你不能直接记录bool。因此我最终做了以下操作:如果[[NSUserDefaults standardUserDefaults]布尔工作:@firstLaunch]==否{NSLog@The应用程序以前从未启动过。}否则{NSLog@The应用程序之前已启动。}它的计算结果一直是假的。也许我不必把它放在settings.bundle中的Root.plist中?我真是目瞪口呆。它开始工作了。很明显,if-else本身就搞糟了,所以我决定在UIAlertView中显示结果。非常感谢你的回答。你真的帮助我理解了一些有用的东西。