1. 程式人生 > >iOS Plist檔案,增刪改查

iOS Plist檔案,增刪改查

- (void)deletePlistWithName:(NSString *)name{
    NSString * plistPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0]stringByAppendingPathComponent:@"test.plist"];
    NSMutableDictionary * plistDic = [NSMutableDictionary dictionaryWithContentsOfFile:plistPath];
    if (nil == plistDic) {
        return;
    }
    NSArray * allkeys = [plistDic allKeys];
    for (int i = 0; i < allkeys.coun

今天早上,9點開始弄Plist,然後一直寫,一直寫(中午取出40分鐘吃飯時間),寫到1點,寫完了,交給頭,頭說,不是這個意思。我是每個使用者建立了一個資料夾,在這個使用者的資料夾裡面,分別根據應用建立了資料夾,將Plist檔案存在這個應用的資料夾中。頭說:就只有一個Plist,這個Plist的命名是以使用者名稱稱來命名的,每個應用的名稱和資訊,記錄在這個Plist檔案裡面。這個Document裡面,只有一個Plist了。。剛睡醒午覺的我,灰灰地又回去改,有了上午的經驗,半個小時,就弄出來了。去給頭請示,又增加了兩個小功能,分別是根據所給是name,去判斷Plist裡面是否包含了這個欄位,如果有這個欄位,返回yes;沒有這個欄位,返回NO。

  雖然我沒做過,但是覺得不難,頭說,要不我做,然後我說,不用,我做就行。回去鼓搗了半個小時,就提交SVN了。

  以前也寫過Plist,不知道怎麼是咋的了,覺得好笨啊。整過來整過去,把自己給弄亂了,而且,測試的時候,也沒有針對性,測了半天,還是有bug。理解需求方面,也不行。好鬱悶。不過,還好,覺得自己一直在進步,萌萌噠~

  剛才自己寫了一個小demo,簡單總結了一下。

技術分享技術分享技術分享技術分享

如果我們想做這樣的一個Plist檔案的話,程式碼如下:

    /**
     *  在document下建立plist
     */
    NSString * documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0];
    
    //也可以這樣新增字尾
    NSString * plistName = [[NSString stringWithFormat:@"test"]stringByAppendingPathExtension:@"plist"];
    NSString * plistPath =[documentPath stringByAppendingPathComponent:plistName];
    
    //使用NSMutableDictionary來接收plist裡面的檔案
    NSMutableDictionary * plistDic = [[NSMutableDictionary alloc]initWithContentsOfFile:plistPath];
    
    //判斷plist存不存在,如果不存在,則建立這個Dic,否則,後面的檔案寫入不進去
    if (plistDic == nil) {
        plistDic = [[NSMutableDictionary alloc]init];
    }
    
    //檔案已經建立完,開始往裡面新增資料
    NSMutableDictionary * nameDic = [plistDic objectForKey:@"name"];
    if (nil == nameDic) {
        nameDic = [[NSMutableDictionary alloc]init];
    }
    
    //這個nameDic裡面,包含一個nameID和一個字典
    NSDictionary * nameItemDic = [NSDictionary dictionaryWithObjectsAndKeys:@"tangtang",@"xiaoming", nil];
    
    NSMutableDictionary * nameItemDic1 = [NSMutableDictionary dictionary];
    [nameItemDic1 setObject:@"tangtang" forKey:@"xiaoming"];
    [nameItemDic1 setObject:@"lili" forKey:@"nicheng"];
    [nameItemDic1 setObject:@"12" forKey:@"age"];
    
    NSMutableArray * nameArr = [NSMutableArray arrayWithArray:[nameDic objectForKey:@"nameArr"]];//因為,如果在之前有plist檔案的話,我們需要將它取出來,然後在後面進行新增
    
    [nameArr addObject:nameItemDic];
    [nameArr addObject:nameItemDic1];
    NSString * name = @"tangtang";
    
    [nameDic setObject:name forKey:@"name"];
    [nameDic setObject:nameArr forKey:@"nameItem"];
    [plistDic setObject:nameDic forKey:name];
    [plistDic writeToFile:plistPath atomically:YES];

  技術分享

執行完上面的程式碼,我們用iFunbox開啟應用程式,在Document裡面,就能看到這個Plist了。相對比較簡單。

提供方法1:--查詢是否包含這個name

/**
 *  遍歷plist檔案,取出裡面想取出的東西
 *
 *  @return if find ,return YES;else ,return NO
 */
-(BOOL)queryPlistWithName:(NSString *)name{
    NSString * plistPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0]stringByAppendingPathComponent:@"test.plist"];
    NSMutableDictionary * plistDic = [NSMutableDictionary dictionaryWithContentsOfFile:plistPath];
    if (nil == plistDic) {
        return NO;
    }
    NSArray * allKeys = [plistDic allKeys];
    for (int i = 0; i < allKeys.count; i++) {
        NSMutableDictionary * tempDic = [plistDic objectForKey:[allKeys objectAtIndex:i]];
        NSString * tempName = [tempDic objectForKey:@"name"];
        if ([tempName isEqualToString:name]) {
            NSLog(@"名字查詢到了");
            return YES;
        }
    }
    
    return NO;
}

  提供方法二:刪除該name

- (void)deletePlistWithName:(NSString *)name{
    NSString * plistPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0]stringByAppendingPathComponent:@"test.plist"];
    NSMutableDictionary * plistDic = [NSMutableDictionary dictionaryWithContentsOfFile:plistPath];
    if (nil == plistDic) {
        return;
    }
    NSArray * allkeys = [plistDic allKeys];
    for (int i = 0; i < allkeys.count; i++) {
        NSMutableDictionary * tempDic = [plistDic objectForKey:[allkeys objectAtIndex:i]];
        NSString * tempName = [tempDic objectForKey:@"name"];
        if ([tempName isEqualToString:name]) {
            [plistDic removeObjectForKey:name];
            NSLog(@"刪除成功");
            [plistDic writeToFile:plistPath atomically:YES];
            return;
        }
    }
    NSLog(@"未找到");
}

  寫Plist,最主要的是:要明白自己的書寫順序,是字典還是陣列,哪個是一級的,哪個是二級的,等等。

  還有就是不要忘記修改完之後,寫入檔案中。

總結完畢。。今天發工資,覺得自己的工資好低啊,旁邊的鄰居,剛開始找工作,就比我高1k,不甘心啊!!!!

t; i++) { NSMutableDictionary * tempDic = [plistDic objectForKey:[allkeys objectAtIndex:i]]; NSString * tempName = [tempDic objectForKey:@"name"]; if ([tempName isEqualToString:name]) { [plistDic removeObjectForKey:name]; NSLog(@"刪除成功"); [plistDic writeToFile:plistPath atomically:YES]; return; } } NSLog(@"未找到");}

相關推薦

iOS Plist檔案刪改

- (void)deletePlistWithName:(NSString *)name{ NSString * plistPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)

XML檔案的一些操作刪改

C#操作xml主要有這麼幾個物件:XmlDocument、XmlElement、XmlNode 名稱空間: using System.Xml; 知識補充: XmlNode和XmlElement的區別: 1、Element是一個小範圍的定義,必須含有完整資訊的節點才能叫做元素。

go語言筆記——切片函數常見操作刪改和搜索、排序

通過 學習 strings 完整 官方文檔 二分 func fun 必須 7.6.6 搜索及排序切片和數組 標準庫提供了 sort 包來實現常見的搜索和排序操作。您可以使用 sort 包中的函數 func Ints(a []int) 來實現對 int 類型的切片排序。例如

Mysql 入門刪改(進階篇)

bsp com pre sco height name 數據 mysql from 主要已以下兩個表students與students_score,進行數據的增刪改查操作! 1、SELECT 1)select id,tel from students

MyBites學習第一講刪改

aid str org res pat nis href input ctype 一、準備開發環境 安裝jdk,下載一個eclipse,這裏就不多講啦 二、創建一個java項目,將下面的包導入到lib中並編譯 具體怎麽講包導入並編譯我這裏稍微講一下:選中項目右鍵——Bui

vue日誌demo刪改的練習

日誌組 sum 必須 創建 pre 方法 prev 文件夾 edit # 安裝### 1. 確定電腦已裝node和npm``` node -v ``` ``` npm -v```出現版本號則說明電腦已經安裝好node和npm### 2. 創建一個基於webpack的項目 `

列表(索引與切片刪改) 計數排序元祖和元祖的嵌套

元素 col 切片 ack list 升序 不能 height pen 1.列表 1.列表相比於字符串. 不限制數據類型. 而且可以存放大量的數據   2.表示方式: [] 方括號中的每一項都要逗號隔開   3.列表和字符串一樣,也有索引與切片 常用功

WebSQL創庫、表刪改例子

executeSql  注意大小寫!!!!錯一個方法都無效 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document<

python使用mysql資料庫刪改

需要注意的是: mysql資料建立的表中,欄位名中不能出現key當欄位名。 因為使用python中呼叫插入語句時,不能成功插入。   匯入庫 import MySQLdb   連線資料庫 #開啟資料庫連線 db = MySQLdb.connec

MySQL簡單的操作刪改

B/S架構模式與C/S架構模式的區別 B/S=WEB/SERVER C/S=CLIENT/SERVIR B/S:使用者通過web瀏覽器開啟域名就能訪問伺服器server的方式就叫做B/S使用者不需要安裝任何東西 C/S:所謂客戶端client在所謂的使用者的電腦裡是需要

第3講 3.2 ElasticSearch建立索引刪改文件

3.寫方法testGet()根據id獲取文件, 測試     @Test     public void testGet() throws Exception{      

第3講:3.1 ElasticSearch建立索引刪改文件

1.新建一個testIndex類,設定ip和埠,寫getClient(){} 方法,新增@Before註解 package com.cruise; import java.net.InetAddress; import org.elasticsearch.action.d

Hibernate的入門之配置檔案刪改

首先使用maven匯入jar包,然後配置主xml檔案 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Confi

mybatis3.1-[topic-16-17]-對映檔案_刪改_insert_獲取自主鍵的值

筆記要點出錯分析與總結 /**測試第16章的增,刪,改 的內容 * 錯誤1: <insert id="addEmp" parameterType="com.bean.Employee"> ,注意選取資料型別是parameterType,不是Map * 錯誤2: 按順序查詢全部

對haproxy檔案進行刪改

1、檔案內容 global log 127.0.0.1 local2 daemon maxconn 256 log 127.0.0.1 local2 info defaults log global mod

C# 用Linq的方式實現對Xml檔案的基本操作(建立xml檔案刪改xml檔案節點資訊)

1 private static void GetXmlNodeInforOld( string xmlPath) 2 { 3 try 4 { 5

MYSQL 基本操作語句刪改操作...

MYSQL 增刪改查操作 MYSQL 對資料庫的基本操作 1、檢視資料庫: mysql> show databases; 2、建立資料庫:db_test mysql> crea

git入門學習一(git安裝刪改基本操作命令)

git 工作區 暫存區 版本庫 在當前目錄新建一個Git程式碼庫 git init (會多出.git資料夾) 設計提交程式碼時的使用者資訊 :git config --global  user.name zhangsan    git config --glob

基於SpringMVC的檔案刪改)上傳、下載、更新、刪除

一、專案背景    摘要:最近一直在忙著專案的事,3個專案過去了,發現有一個共同的業務,那就是附件的處理,附件包括各種文件,當然還有圖片等特殊檔案,由於時間的關係,每次都是匆匆忙忙的搞定上線,稱這專案的空檔,整理了一份附件上傳、下載、刪除的專案,主要就是附件的處理,情況包含以下幾種:   1. 表單個附件共存

Python--綜合練習--對檔案進行刪改

知識點應用:strip()  tag       函式封裝      檔案操作      for迴圈      os模組      程式碼解耦 例項 tag = True while tag: print('level') choice = input('level1