如何在 ios 中保存、检索、删除和更新 Plist 文件中的数据?

2023-12-22

我正在创建一个 iPhone 应用程序,在其中我可以获取所有国家/地区名称、徽标和玩家名称。我想将该数据保存在.plist代替sqlite服务器。我不知道如何创建 plist 文件DocumentDirectory并保存数据。

请有人建议我如何将数据保存在 plist 文件中。


我正在通过屏幕截图并逐步进行操作。请按照此操作,您将得到答案。

首先,您必须通过 Xcode 创建属性列表。

Step:1

Step:2

Step:3

在保存按钮操作中保存数据:

   // Take 3 array for save the data .....

    -(IBAction)save_Action:(id)sender
    {
        NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *documentsPath = [paths objectAtIndex:0];
        NSString *plistPath = [documentsPath stringByAppendingPathComponent:@"manuallyData.plist"];

        [self.nameArr addObject:self.nameField.text];
        [self.countryArr addObject:self.countryField.text];
        [self.imageArr addObject:@"image.png"];

        NSDictionary *plistDict = [[NSDictionary alloc] initWithObjects: [NSArray arrayWithObjects: self.nameArr, self.countryArr, self.imageArr, nil] forKeys:[NSArray arrayWithObjects: @"Name", @"Country",@"Image", nil]];

        NSError *error = nil;
        NSData *plistData = [NSPropertyListSerialization dataFromPropertyList:plistDict format:NSPropertyListXMLFormat_v1_0 errorDescription:&error];

        if(plistData)
        {
            [plistData writeToFile:plistPath atomically:YES];
            alertLbl.text = @"Data saved sucessfully";
        }
        else
        {
            alertLbl.text = @"Data not saved";
        }
    }
 // Data is saved in your plist and plist is saved in DocumentDirectory

Step:4

从 plist 文件中检索数据:

    NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsPath = [paths objectAtIndex:0];
    NSString *plistPath = [documentsPath stringByAppendingPathComponent:@"manuallyData.plist"];

    if (![[NSFileManager defaultManager] fileExistsAtPath:plistPath])
    {
        plistPath = [[NSBundle mainBundle] pathForResource:@"manuallyData" ofType:@"plist"];
    }

    NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:plistPath];
    self.nameArr = [dict objectForKey:@"Name"];
    self.countryArr = [dict objectForKey:@"Country"];

Step:5

从 plist 文件中删除数据:

    NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsPath = [paths objectAtIndex:0];
    NSString *plistPath = [documentsPath stringByAppendingPathComponent:@"manuallyData.plist"];
    NSMutableDictionary *dictionary = [NSMutableDictionary dictionaryWithContentsOfFile:(NSString *)plistPath];

    self.nameArr = [dictionary objectForKey:@"Name"];
    self.countryArr = [dictionary objectForKey:@"Country"];

    [self.nameArr removeObjectAtIndex:indexPath.row];
    [self.countryArr removeObjectAtIndex:indexPath.row];

    [dictionary writeToFile:plistPath atomically:YES];

Step:6

在“更新”上更新您的数据,单击“操作”:

    NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsPath = [paths objectAtIndex:0];
    NSString *plistPath = [documentsPath stringByAppendingPathComponent:@"manuallyData.plist"];

    if (![[NSFileManager defaultManager] fileExistsAtPath:plistPath])
    {
        plistPath = [[NSBundle mainBundle] pathForResource:@"manuallyData" ofType:@"plist"];
    }

    self.plistDic = [[NSDictionary alloc] initWithContentsOfFile:plistPath];

    [[self.plistDic objectForKey:@"Name"] removeObjectAtIndex:self.indexPath];
    [[self.plistDic objectForKey:@"Country"] removeObjectAtIndex:self.indexPath];
    [[self.plistDic objectForKey:@"Image"] removeObjectAtIndex:self.indexPath];

    [[self.plistDic objectForKey:@"Name"] insertObject:nameField.text atIndex:self.indexPath];
    [[self.plistDic objectForKey:@"Country"] insertObject:countryField.text atIndex:self.indexPath];
    [[self.plistDic objectForKey:@"Image"] insertObject:@"dhoni.jpg" atIndex:self.indexPath];

    [self.plistDic writeToFile:plistPath atomically:YES];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 ios 中保存、检索、删除和更新 Plist 文件中的数据? 的相关文章

  • iOS:从非图像数据生成图像(Godus,如风景)

    所以看到图像后Godus http www kickstarter com projects 22cans project godus我想知道如何生成简单的 非交互式的 2D 图像 with 不同高度或层数的颜色不同就像下面的图片一样 我只
  • WebGL iOS 渲染为浮点纹理

    我正在尝试在 iOS Safari 上的 WebGL 中渲染浮点纹理 而不是在本机应用程序中 我已经设法让 iOS 读取手动 例如从 JavaScript 创建的浮点纹理 但是当我创建浮点类型的帧缓冲区并使用 GPU 渲染到其中时 它不起作
  • Swift:从自定义 UITableViewCell 中的 UITextField 检索文本并将其放入数组中

    我正在制作一个非常简单的应用程序 用户在第一个屏幕中输入人数 在第二个屏幕中 它会生成一些UITableViewCell基于用户在第一个屏幕中输入的数字 这UITableViewCell have a UITextField在其中 一旦用户
  • 切换到工作区并在 Xcode 中添加 CocoaPods 后提交 git 吗?

    我刚刚在 Xcode 5 中将 CocoaPods 添加到我当前的项目中 当然 CocoaPods 创建了一个工作区 并且我已在 Xcode 中启动了该工作区 我在工作区中看到了我的项目和 Pods 项目 我的项目从第一天起就处于源代码控制
  • 从 Core Data、iOS 获取最后插入的项目

    有没有办法获取核心数据数据库中最后插入的项目 这将返回最后插入的对象 setFetchLimit 1 和 setFetchOffset 所有条目数 1
  • 如何将十六进制数组转换为 UIImage?

    有几个与使用 P25mi 动态打印图像相关的未解答问题 没有一个得到公认的答案 下面有几个链接 如何将图像转换为位图代码以便在 iPhone 中进行蓝牙打印 https stackoverflow com questions 1383828
  • iPad 3 中配备 Xcode 4.2 和 Retina 的 iOS 5.1

    我有一台装有 Mac OS X Snow Leopard 的 Mac 我可以添加 iOS 5 1 吗 使用 iPad 3 的新分辨率 我们将如何处理图像 因为如果该应用程序将在 iPhone 3GS 4 和 iPad 3 中运行 我认为我们
  • 在模拟器中运行应用程序时删除本地通知的 iOS 权限警报

    我正在尝试编写验收测试KIF https github com kif framework KIF在一个很早就要求本地通知权限的应用程序上 不幸的是 由于 iOS 模拟器安全原因无法使用 KIF 自动接受 iOS 权限警报 https gi
  • 打印附加结构(swift 4)

    我有三个 textifled 用于将数据附加到结构中 如何打印我附加的内容 现在我收到一条错误消息 import UIKit class ViewController UIViewController IBOutlet var c UITe
  • 当设置 setVisibleXRangeMaximum 时,iOS-Charts X 轴值无限重复

    我正在尝试绘制一个图表 其中 x 轴是TimeIntervalY 轴是power consumption 由于每天都会有数据 因此将有太多数据无法显示 因此 我想一次显示 5 个值 我通过设置实现了这一点self chart setVisi
  • 具有非零“内容”的 QTMovieLayer 的 iOS 替代品?

    背景 QTKit QuickTime Kit 是一个来自 10 3 天的 Mac 框架 在 10 5 中添加了一些层 例如QTMovieLayer QTMovieLayer 的好处之一是您可以使用常规访问电影内容content图层上的属性并
  • 错误 ITMS-9000 iTunes Connect

    我正在尝试上传一个phonegap build iOS应用程序到应用程序商店 我不断收到此错误 ERROR ITMS 9000 Missing Code Signing Entitlements No entitlements found
  • 以编程方式更改 UISlider 的范围

    如何以编程方式设置 UISlider 的最小最大范围 例如 虚拟代码 UISlider slider UISlider alloc init slider min 3 slider max 3 EDIT 所以我有以下内容 sl minimu
  • 删除部分(红色删除按钮),UITableViewController - iOS

    我正在尝试做一个分组的 uitableview 并且我已经激活了编辑选项 我希望用户也能够删除整个部分 而不仅仅是特定行 因此 当您单击 编辑 时 每个表格单元格左侧显示的红色减号按钮也应该显示在各个部分 部分标题左侧 有人知道如何做到这一
  • Flutter - 删除 ListView 中项目之间的空间

    我正在使用 ListView builder 函数来创建项目列表 然而 iOS 中每个项目之间的空间很大 截图 你知道如何删除项目吗 看来是默认的 因为我没有添加它 code 列表显示 return Scaffold body ListVi
  • 如何确定 UINavigationController 中工具栏的高度?

    我有一个带有由 UINavigationController 呈现的工具栏的视图 当我处理 UIKeyboardWillShowNotification 时 我将整个屏幕向上滚动键盘的高度 问题是当显示键盘时 底部工具栏不显示 所以我只需将
  • swift 3.0 中的 Sha 256 加密语法错误

    func SHA256 gt String let data self data using String Encoding utf8 let res NSMutableData length Int CC SHA256 DIGEST LE
  • iOS SDK:MapKit MKPolyLine 未显示

    我试图在地图上显示多段线 但该线没有显示 我尝试了很多事情 但注意到似乎有用 我检查了核心数据函数 它正在返回数据 所以这不是问题 它必须是我在地图点创建或地图上绘制的某个地方 我猜 我确信一定是某个地方出了点小错误 但我找不到它 My c
  • HTML5 地理定位 - 在 iOS 上无法始终工作

    目前正在使用 HTML5 地理定位 我已经在所有网络浏览器上测试了它 它似乎工作正常 然而 当我在 iPad 上测试地理定位时 它在 iPad mini 上始终有效 但当我将其放在更大的 iPad iPad 2 上时 位置似乎并不总是有效
  • 将我的免费应用程序从 Universal 升级到仅限 iPhone

    我释放我的free app到 appStore 它的版本是 1 0 它是一个Universal app 现在我想发布 1 1 版本到 appStore 我将其升级到iPhone only appStore会拒绝我吗 我已阅读类似的问题 ht

随机推荐

  • 使用八度无头

    是否有可能使用 Octave 无头 像这样的东西 octave lt 5 4 gt result txt Using octave silent eval 5 4 gt result txt 你会得到 ans 9 in result txt
  • 是否可以在CSS中设置img标签的src属性?

    是否可以设置srcCSS 中的属性值 大多数情况下 我们这样使用它 img src pathTo myImage jpg 我希望它是这样的 img class myClass myClass some src property url pa
  • Newtonsoft.Json.DeserializeObject 抛出什么异常?

    Newtonsoft Json DeserializeObject 抛出什么异常 我想处理他们 http james newtonking com json help topic html M Newtonsoft Json JsonCon
  • GIT:根文件夹中存在 CRA 应用程序,我如何正确推送到 git?

    我对 git 很陌生 这可能是一个愚蠢的问题 但我真的不知道如何解决这个问题 我一直在努力寻找答案 但我找不到 我试图使用 React js 和 Node js 创建我的项目 我创建了从 npx create react app clien
  • 存储用户设置 - 使用“标志”或“位”而不是一堆布尔值有什么问题吗?

    我正在为我的 MVC 应用程序设计用户设置 现在我有大约 20 个用户可以切换的布尔设置 由于每个用户总是拥有每个设置 因此我正在考虑将每个设置存储为用户表中的布尔值 尽管随着应用程序需求的增长 这会变得笨拙 第一个问题 在这种情况下 表上
  • Swift-删除推送通知徽章号码?

    我试图快速删除图标徽章 但 PFInstallation 似乎不再起作用 我该怎么做呢 您可以通过将应用程序徽章图标设置为 0 来 删除 它 斯威夫特 UIApplication sharedApplication applicationI
  • 我可以在 emberjs 中为视图提供显示动画吗

    这是使用 emberjs 路由器的示例http jsbin com agameq edit http jsbin com agameq edit 现在我想要一些显示动画 例如当路线更改时淡入或淡出 我应该怎么办 Every View在 em
  • 选择 Apache Hive 中是否存在表

    我有一个配置单元查询 其格式如下 select from table1 left join select from table2 on some condition The table2根据环境的不同 可能不存在 因此 如果仅存在 tabl
  • MIPS $gp 寄存器

    使用有危险吗 gp注册来存储一个值 我想我的问题是真正的功能是什么 gp它是否以某种方式在幕后被调用 以便如果我使用它 事情可能会变得非常非常错误 好吧 gp 寄存器指向全局区域 习俗 http en wikipedia org wiki
  • 文件中的修改历史记录

    我曾在一些没有使用源代码管理的地方工作过 他们似乎养成了在更改的代码周围添加注释来解释更改的习惯 以便可以恢复事情 我发现这使得代码非常难以阅读 并且相当坚定地认为在引入源代码控制之后不需要这样的注释 因为修订历史记录将让您将票证与更改相匹
  • 在Android中将电话号码格式化为E164格式

    我想将设备中联系人的每个电话号码转换为 E 164 格式 所以 我在下面使用了开源 库电话号码 https github com googlei18n 所以我像这里一样使用它 Phonenumber PhoneNumber formatte
  • linspace 相对于冒号“:”运算符的优点是什么?

    写作有什么好处吗 t linspace 0 20 21 over t 0 1 20 我知道前者产生一个向量 就像第一个一样 谁能告诉我一些情况linspace有用过t 0 1 20 这不仅仅是可用性 尽管文档说 The linspace函数
  • MS Word、OpenXML、PageSetup、方向和 4 方向边距

    我用 OpenXML 制作了这个文档 我正在学习 OpenXML 哦 太难了 MainDocumentPart m wd AddMainDocumentPart m Document new Document Body b1 new Bod
  • 在页面加载时在 CSS 中触发没有 javascript 的转换

    我想通过 CSS 过渡来增加栏的宽度 但不喜欢通过悬停事件触发它 例如http jsfiddle net TFHn9 http jsfiddle net TFHn9 我只是想要一个即时动画 当页面加载时 当然不需要Javascript 有机
  • 如何编译/安装node.js(无法配置cxx编译器!)(Ubuntu)。

    如何在 Ubuntu 上编译 安装 Node js 它失败并出现以下错误cxx compiler 单线安装所有需要的依赖项 curl 和 git 并不是真正需要的 但非常有用 如果通过 nvm 安装也需要 sudo apt get inst
  • 如何在 JavaScript 中实现锁

    怎么可能相当于lock在 C 中可以用 JavaScript 实现吗 因此 为了解释我的想法 一个简单的用例是 用户点击按钮B B引发 onclick 事件 如果B is in event state该事件正在等待B将在ready stat
  • Android中如何获取真实的设备型号?

    例如 在我的 Xperia mini 手机上 建造模型 http developer android com reference android os Build html MODEL回报 st15i 建造 制造商 http develop
  • 何时在 OpenGL 中使用 glBufferData

    我刚刚开始学习 C 中的顶点缓冲区对象 我正在读一本关于 OpenGL 的书 书中说 VBO 渲染比其他形式的渲染更高效 因为数据存储在 GPU 上而不是堆上 但是 我很困惑如果您仍然需要将数据数组从堆加载到 GPU 这会是怎么回事 每隔几
  • 恢复后重新安装自制符号链接

    重新安装后 我从时间机器恢复了运行 10 9 的 Mac 但似乎下面的符号链接 usr local bin因为有些公式已经丢失了 公式依然按照安装brew list formula但没有来自的链接 usr local bin e g usr
  • 如何在 ios 中保存、检索、删除和更新 Plist 文件中的数据?

    我正在创建一个 iPhone 应用程序 在其中我可以获取所有国家 地区名称 徽标和玩家名称 我想将该数据保存在 plist代替sqlite服务器 我不知道如何创建 plist 文件DocumentDirectory并保存数据 请有人建议我如