Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何从plist更新和删除字符串项和整个字典项_Iphone_Cocoa Touch_Iphone Sdk 3.0_Uinavigationcontroller_Cocos2d Iphone - Fatal编程技术网

Iphone 如何从plist更新和删除字符串项和整个字典项

Iphone 如何从plist更新和删除字符串项和整个字典项,iphone,cocoa-touch,iphone-sdk-3.0,uinavigationcontroller,cocos2d-iphone,Iphone,Cocoa Touch,Iphone Sdk 3.0,Uinavigationcontroller,Cocos2d Iphone,我有下面的plist结构 Q1在plist文件中保存全名后,如何更新/更改代码中的全名 Q2如何仅删除一个字典项(如上面的示例中的项0) 我将导航控制器TableView与详细示例一起使用 谢谢您没有真正更新或删除plist文件中的内容。这比这更复杂一点: 将plist文件读入内存 更改内存中的版本 将新版本写回磁盘 在图书馆读书是很平常的事。在您的情况下,由于根元素是数组,您需要执行以下操作: Root ---- Array Item 0- Dictionary fullName

我有下面的plist结构

Q1在plist文件中保存全名后,如何更新/更改代码中的全名

Q2如何仅删除一个字典项(如上面的示例中的项0)

我将导航控制器TableView与详细示例一起使用


谢谢

您没有真正更新或删除plist文件中的内容。这比这更复杂一点:

  • 将plist文件读入内存
  • 更改内存中的版本
  • 将新版本写回磁盘
  • 在图书馆读书是很平常的事。在您的情况下,由于根元素是数组,您需要执行以下操作:

    Root ---- Array
      Item 0- Dictionary
        fullName ---- String
        address ---- String
      Item 1 ---- Dictionary
        fullName ---- String
        address ---- String
    
    这里我们创建一个可变数组,因为我们知道我们将要改变其中的内容。如果我们只是想阅读信息,我们应该使用
    NSArray
    而不是
    NSMutableArray

    更改内存中的版本与操作标准容器一样简单:

    NSMutableArray * plistContents = [NSMutableArray arrayWithContentsOfFile:plistFilePath];
    
    在这里,我们必须制作字典的可变(可变)副本,因为在plist中读取只会创建不可变的
    NSDictionary
    。因此,我们复制字典,更改要更改的值,然后用新修改的字典替换原始字典

    将plist写入磁盘也很简单:

    //delete the first dictionary:
    [plistContents removeObjectAtIndex:0];
    
    //Change a dictionary's full name:
    NSMutableDictionary * firstDictionary = [[plistContents objectsAtIndex:0] mutableCopy];
    [firstDictionary setObject:@"Mike" forKey:@"fullName"];
    [plistContents replaceObjectAtIndex:0 withObject:firstDictionary];
    [firstDictionary release];
    

    您并不真正更新或删除plist文件中的某些内容。这比这更复杂一点:

  • 将plist文件读入内存
  • 更改内存中的版本
  • 将新版本写回磁盘
  • 在图书馆读书是很平常的事。在您的情况下,由于根元素是数组,您需要执行以下操作:

    Root ---- Array
      Item 0- Dictionary
        fullName ---- String
        address ---- String
      Item 1 ---- Dictionary
        fullName ---- String
        address ---- String
    
    这里我们创建一个可变数组,因为我们知道我们将要改变其中的内容。如果我们只是想阅读信息,我们应该使用
    NSArray
    而不是
    NSMutableArray

    更改内存中的版本与操作标准容器一样简单:

    NSMutableArray * plistContents = [NSMutableArray arrayWithContentsOfFile:plistFilePath];
    
    在这里,我们必须制作字典的可变(可变)副本,因为在plist中读取只会创建不可变的
    NSDictionary
    。因此,我们复制字典,更改要更改的值,然后用新修改的字典替换原始字典

    将plist写入磁盘也很简单:

    //delete the first dictionary:
    [plistContents removeObjectAtIndex:0];
    
    //Change a dictionary's full name:
    NSMutableDictionary * firstDictionary = [[plistContents objectsAtIndex:0] mutableCopy];
    [firstDictionary setObject:@"Mike" forKey:@"fullName"];
    [plistContents replaceObjectAtIndex:0 withObject:firstDictionary];
    [firstDictionary release];
    

    您不直接操作存储在plist中的数据,而是将对象序列化到plist或从plist取消序列化对象。由于要更改数据,因此需要取消序列化为可变对象。”当您使用或选项时,s将取消plist的序列化以创建可变集合

    这将获得一个嵌套的
    NSMutableArray
    s、
    NSMutableDictionary
    s的集合,
    NSString
    s或
    NSMutableString
    s(取决于您是指定了
    NSPropertyListMutableContainers
    还是
    NSPropertyListMutableContainers和leaves
    )&c。解除plist序列化后,使用集合提供的任何方法删除(例如,
    NSMutableArray
    NSMutableDictionary
    )或设置(例如,)项


    有关详细信息,请阅读。

    如果不直接对存储在plist中的数据进行操作,则将对象序列化到plist或从plist取消序列化对象。由于要更改数据,因此需要取消序列化为可变对象。”当您使用或选项时,s将取消plist的序列化以创建可变集合

    这将获得一个嵌套的
    NSMutableArray
    s、
    NSMutableDictionary
    s的集合,
    NSString
    s或
    NSMutableString
    s(取决于您是指定了
    NSPropertyListMutableContainers
    还是
    NSPropertyListMutableContainers和leaves
    )&c。解除plist序列化后,使用集合提供的任何方法删除(例如,
    NSMutableArray
    NSMutableDictionary
    )或设置(例如,)项


    有关更多信息,请阅读。

    感谢您修复我的格式设置。我正在读“代码和预格式化文本”,谢谢你修改我的格式。我正在读“代码和预格式化文本”,谢谢Dave。明天是美国东部时间凌晨4点,我肯定孩子们会在6点叫醒我。您的信息非常翔实且经过深思熟虑;在我看来,它消失了,而且效果很好。谢谢现在我只需要让更新工作。更新发生在“详细信息”视图中,但根据您给我的信息,我想我可以找到答案。谢谢Dave。明天是美国东部时间凌晨4点,我肯定孩子们会在6点叫醒我。您的信息非常翔实且经过深思熟虑;在我看来,它消失了,而且效果很好。谢谢现在我只需要让更新工作。更新发生在details视图上,但根据您给我的信息,我想我可以找到答案。+1用于使用可变容器选项。我从不记得存在:)+1用于使用可变容器选项。我从来都不记得它的存在:)