iOS能够在模拟器上读取plist文件,但不能在设备上读取

时间:2012-02-10 18:05:25

标签: iphone objective-c ios cocoa-touch nsuserdefaults

之前我读过有相同问题的帖子,但我的问题仍然存在。我的应用程序首先需要读取plist文件以获取一些参数,并且当加载到设备上时,无法读取默认设置plist(在模拟器上工作)。一个解决方案应该是将plist复制到文档目录中,但只有这个?设备无法读取plist中设置的用户默认值吗?如果我将它复制到docs目录,如果有其他位置,设备是否能够为plist关联键?我需要在执行任何函数之前读取用户默认值。谢谢。

-(void)loadSettings
{    
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

    self.userID = [[NSUserDefaults standardUserDefaults] stringForKey:@"userID"];

    self.nom2 = [[NSUserDefaults standardUserDefaults] stringForKey:@"t2"];
    self.nom3 = [[NSUserDefaults standardUserDefaults] stringForKey:@"t3"];
    self.nom4 = [[NSUserDefaults standardUserDefaults] stringForKey:@"t4"];

    self.currentGlobal = [[NSUserDefaults standardUserDefaults] stringForKey:@"versionApp"];
    NSLog(@"Version App = %@", currentGlobal);


    self.colorTab = [[NSUserDefaults standardUserDefaults] stringForKey:@"color"];

    firstBoot = [[NSUserDefaults standardUserDefaults] boolForKey:@"firstBoot"];

    [defaults synchronize];

}

3 个答案:

答案 0 :(得分:3)

听起来您只想在用户默认值中设置一些初始值,以便您的应用可以读取它们。如果是这种情况,那么您只需要使用registerDefaults: NSUserDefaults方法}。例如:

[[NSUserDefaults standardUserDefaults] registerDefaults:
    [NSDictionary dictionaryWithObject: [NSNumber numberWithBool:YES] 
                                forKey: @"firstBoot"]];

NSUserDefaults的美妙之处在于你永远不会搞乱pList的东西或iOS文件系统。

答案 1 :(得分:1)

您是否看过使用NSUserDefaults?

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSUserDefaults_Class/Reference/Reference.html

它会自动执行您所描述的内容,而您无需管理文件。这是一个简单的API,您可以读取和写入设置,iOS负责为您存储。

答案 2 :(得分:1)

您无需将standardUserDefaults的plist复制到文档目录。您应该让iOS自己创建此文件,而不是将其包含在您的应用中。如果您需要设置默认值,那么您应该在standardUserDefaults实例上使用registerDefaults:方法,方法是传入一个键值对字典。