【问题标题】:how to write NSMutableDictionary into Plist如何将 NSMutableDictionary 写入 Plist
【发布时间】:2010-10-21 06:07:56
【问题描述】:

任何人都可以帮助我解决如何将 NSMutableDictionary 写入 plist....

提前谢谢..

【问题讨论】:

    标签: iphone objective-c plist nsmutabledictionary


    【解决方案1】:

    确保您正在写入的 pList 文件位于可以编辑它的合法位置,例如应用程序沙箱中的文档。 然后找到该位置的路径(如果有现有的 pList 文件,它将覆盖),并使用:

    [myDictionary writeToFile:path atomically:YES];
    

    写下你在这个过程中走了多远,也许还有一些代码/错误消息...

    【讨论】:

    • 这是我的代码:NSMutableDictionary *nameDetails=[[NSMutableDictionary alloc] init]; [nameDetails setValue:username forKey:USERNAME_KEY]; [nameDetails setValue:password forKey:PASSWORD_KEY]; NSString *loginDetails = [[NSBundle mainBundle] pathForResource:@"Login" ofType:@"plist"]; [nameDetails writeToFile:loginDetails atomically:YES]; savedStock = [NSMutableDictionary dictionaryWithContentsOfFile:loginDetails];
    【解决方案2】:
    [yourDict writeToFile:filePath atomically:YES];
    

    请注意,字典必须包含 plist 对象(NSDataNSDateNSNumberNSStringNSArrayNSDictionary 的实例)。并且字典键必须是NSString 对象

    【讨论】:

    • 这是我的代码 [nameDetails writeToFile:loginDetails atomically:YES];
    • 什么是 loginDetails 路径?您确定您的字典符合其内容类型的条件吗?
    【解决方案3】:

    问题是您的应用程序正在尝试将 plist 写入其自己的包中。您的 plist 应存储在用户库中。但是,如果您要存储用户的服务凭据,那么您真的应该使用 Mac OS X 钥匙串服务来存储该信息。

    【讨论】:

      【解决方案4】:
      NSMutableDictionary *nameDetails=[[NSMutableDictionary alloc] init]; 
      [nameDetails setValue:username forKey:USERNAME_KEY]; 
      [nameDetails setValue:password forKey:PASSWORD_KEY]; 
      
      NSString *loginDetails = [[NSBundle mainBundle] pathForResource:@"Login" ofType:@"plist"]; 
      [nameDetails writeToFile:loginDetails atomically:YES];
      
      savedStock = [NSMutableDictionary dictionaryWithContentsOfFile:loginDetails];
      

      【讨论】:

        【解决方案5】:
        NSString *pathToPlist = [[NSBundle mainBundle] bundlePath];
        pathToPlist = [pathToPlist stringByDeletingLastPathComponent];
        pathToPlist = [pathToPlist stringByAppendingPathComponent:@"Documents"];
        NSLog(@"%@", pathToPlist; //*
        pathToPlist = [pathToPlist stringByAppendingPathComponent:@"Login.plist"];
        NSDictionary *nameDetails = @{@"name": @"Albert", @"password": @"emc2"};
        [nameDetails writeToFile:pathToPlist atomically:YES];
        
        • 我们正在记录控制台的路径,以便能够在 Finder 中找到它。将路径从控制台复制到剪贴板。然后在 Finder 的 Go 菜单中选择“Go To Folder...”。将路径粘贴到对话框中,将打开 plist 所在的文件夹。然后您可以检查它并确保一切正常。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-09-07
          • 1970-01-01
          • 1970-01-01
          • 2013-02-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多