iOS - 将项目添加到 plist

Posted

技术标签:

【中文标题】iOS - 将项目添加到 plist【英文标题】:iOS - Adding items to plist 【发布时间】:2015-07-13 11:13:03 【问题描述】:

我正在从“NSMutableDictionary”中编写一个 plist。没问题。

但是当我想添加到文件时,新条目会覆盖第一个条目。

我想要的是这样的:

<?xml version="1.0" encoding="UTF-8"?>
<names>
<name1>
    <key>
        firstname
    </key>
    <value>
        mememememe
    </value>
    <key>
        lastname
    </key>
    <value>
        mememememe
    </value>

</name1>
<name2>
    <key>
        firstname
    </key>
    <value>
        mememememe
    </value>
    <key>
        lastname
    </key>
    <value>
        mememememe
    </value>

    </name2>
</names>
Here's my code so far:



    NSString *filename = [documents stringByAppendingPathComponent:@"faves.plist"];
    NSMutableDictionary *loadedMiscDictionary = [NSMutableDictionary dictionaryWithContentsOfFile:filename];

 NSArray *directories = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documents = [directories firstObject];

    NSMutableDictionary *tempDict = [[NSMutableDictionary alloc] init];
    [tempDict setValue:firstNameString forKey:@"firstname"];
    [tempDict setValue:secondNameString forKey:@"secondName"];

  [loadedMiscDictionary addEntriesFromDictionary:tempDict];
    [loadedMiscDictionary writeToFile:filename atomically:YES];

请让我知道我做错了什么。 TIA

更新

我在上面更改了我的代码 sn-p..

【问题讨论】:

你用过我的回答吗 不,答案还没有完成。 表示你想说的我没有得到你的问题。是否需要一些代码或其他东西 【参考方案1】:

您的代码会覆盖 plist 的旧条目。您没有在字典中获取 plist 文件条目。只需创建一个新字典,添加一些新条目并覆盖旧文件。

获取plist文件数据 将其存储在 NSMutableDictionary 或 NSMutableArray 中 在该字典中添加新条目。或数组 最后获取当前文件位置并存储新创建的字典。或包含新旧条目的数组。

希望对你有帮助

【讨论】:

【参考方案2】:

您应该使用右键单击 + 添加行为***类别和子类别使用 + 号在 plist 文件中添加新的行

【讨论】:

感谢您的回答,但我需要这是一个动态的 plist。 如果我做对了,如果您的密钥相同,那么它将覆盖。您需要为每个对象设置不同的键。 进一步改进您的代码。 1. 第一次因为可能没有数据/plist 文件,请检查字典计数 ([loadedMiscDictionary count] == 0) 如果为真,然后将您的应用字典数据直接添加到文件中。 2.如果为假则使用 [loadedMiscDictionary addEntriesFromDictionary:tempDict];添加新条目和 [loadedMiscDictionary setDictionary:tempDict];用于更新旧一次。 欢迎。希望你得到解决方案

以上是关于iOS - 将项目添加到 plist的主要内容,如果未能解决你的问题,请参考以下文章

为啥要将 entitlements.plist 添加到我的项目中?

将项目添加到 .plist 并在自定义 UITableViewCell 中显示

将文件添加到我的 Plist - 我想我快到了

是否可以向 Info.Plist 添加评论或在 iOS 中添加权利,这是一种好的做法?

将新的 plist 文件添加到 iOS 应用程序

将 Firebase 数据库添加到 iOS 部分时遇到问题