1. 程式人生 > >iOS開發——CoreData資料持久化儲存

iOS開發——CoreData資料持久化儲存

coreData是用於對資料進行例項化處理的類 首先在建立專案的時候需要勾選Use Core Data
在勾選了coreData之後會生成對應的.xcdatamodeld檔案。
這種檔案在經過編譯之後會變成 .momd檔案 然後選中這個檔案 雙擊開啟
點選下面的加號  可以增加一個實體
會出現這樣的一個實體 然後點選Attributes可以新增這個實體對應的屬性(我們說的把資料存起來,其實就是找到實體所對應的屬性,然後對屬性賦值)
都建立完之後點選 選擇Create NSManagedObject SubClass 用法 1.首先宣告一個NSManagedObjectContext *context;型別的物件 這個context上下文物件是用來對資料實體化進行操作的管理物件 例項化上下文:
NSString *storePath= [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject stringByAppendingString:@"/CoreData.db"]; 獲取文件目錄下地資料庫的path self.context=[[NSManagedObjectContext alloc]initWithConcurrencyType:NSPrivateQueueConcurrencyType];//後面的引數一般是選私有的這個。 //需要給資料庫管理關聯一個數據持久化協調器
,我們要使用這個協調器進行實體和sqlite之間的通訊 //URL表示實體所在的.xcdatamodeld檔案的路徑 //xcdatamodeld這個型別在編譯的時候會生成.momd這個檔案即可 NSString *path=[[NSBundle mainBundle]pathForResource:@"CoreDateDemo" ofType:@"momd];//找到這個momd檔案所在的路徑 NSURL *url=[NSURL fileURLWithPath:path];//把路徑轉換為url NSManagedObjectModel *model=[[NSManagedObjectModel
alloc]initWithContentsOfURL:url];//把得到的檔案轉換為NSManagedObjectModel型別的資料 NSPersistentStoreCoordinator *coordinator=[[NSPersistentStoreCoordinator alloc]initWithManagedObjectModel:model];
       
//設定儲存型別為SQLite //type:資料儲存的型別 //URL表示需要儲存的資料在沙盒中得路徑 //設定資料持久化儲存的路徑 NSURL *coreDataPath=[NSURL fileURLWithPath:storePath];//找到資料庫所在的路徑         [coordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:coreDataPath options:nil error:nil];//把要管理的資料庫型別轉換為SQLite型別的         [self.context setPersistentStoreCoordinator:coordinator];//設定要管理的coreData協調器。 2.插入資料   此處Person是上面通過開啟檔案後建立實體,在實體中新增完屬性由系統生成的檔案,我們在用的時候需要匯入.檔案 Person *p=[NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:self.context];//這裡是把實體去出來賦值給p; //設定屬性 [email protected]“張三”; [email protected]; [self.context save:nil]//這裡值得注意的是,每次做完更改之後都需要save儲存操作。後面的nil引數是一個錯誤資訊,可要可不要 3.刪除資料 NSManagedObject *p; [self.context deleteObject:p]; 值得注意的是,在這裡要刪除的物件必須是NSManagedObject型別的,並且傳入的型別不能為nil,如果傳入的引數為nil,則直接崩潰 self.context save:nil]//這裡值得注意的是,每次做完更改之後都需要save儲存操作。後面的nil引數是一個錯誤資訊,可要可不要 4.查詢資訊 查詢資訊這一塊系統有封裝好的程式碼快  只要在函式內部輸入fetch就會呼叫這段程式碼塊 NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; NSEntityDescription *entity = [NSEntityDescription entityForName:@"<#Entity name#>" inManagedObjectContext:<#context#>]; //第一個引數為實體的名字  這裡是Person 第二個引數為上下文管理物件,這裡指self.context     [fetchRequest setEntity:entity]; // Specify criteria for filtering which objects to fetch NSPredicate *predicate = [NSPredicate predicateWithFormat:@"<#format string#>", <#arguments#>];//這裡指的時查詢謂詞,即相當於SQL中的where條件,裡面的引數主要是對查詢謂詞進行格式化     [fetchRequest setPredicate:predicate];
   
// Specify how the fetched objects should be sorted NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"<#key#>" ascending:YES];//此行程式碼的作用是在查詢的時候對結果進行排序,key指的是排序欄位, 後面ascending YES是按照升序排序 NO是按照降序排序     [fetchRequest setSortDescriptors:[NSArray arrayWithObjects:sortDescriptor, nil]];
   
NSError *error = nil; NSArray *fetchedObjects = [<#context#> executeFetchRequest:fetchRequest error:&error];//這段程式碼中的第一個引數是指上下文管理物件 self.context   fetchedObjects是最後查詢出來的陣列。 if (fetchedObjects == nil) {
        <#Error handling code#>
    } 5.更改資訊 在修改資訊首先確定好要修改那個實體的資訊 例如要修改Person *per的資訊 那麼 修改的方式為   per.name=@"劉德華";     [self.context save:nil]; 每次操作之後都要記得save就OKle 

相關推薦

iOS開發——CoreData資料持久化儲存

coreData是用於對資料進行例項化處理的類 首先在建立專案的時候需要勾選Use Core Data 在勾選了coreData之後會生成對應的.xcdatamodeld檔案。 這種檔案在經過編譯之後會變成 .momd檔案 然後選中這個檔案 雙擊開啟 點選下面的加號

ios 資料持久化儲存

說到資料儲存,我們不得不先了解下蘋果的沙盒 、如何獲取沙盒路徑和沙盒目錄下對應的檔案: 一、沙盒(sandbox) 每一個App都有一個儲存空間。iOS系統為每個應用程式建立自己的目錄,每個應用程式只能訪問自己的目錄,不能相互通訊。 沙盒主要包括下面幾個檔案:用模擬器執行 NS

[Xcode10 實際操作]七、檔案與資料-(11)資料持久化儲存框架CoreData的使用:建立CoreData實體並插入資料

本文將演示【CoreData】資料持久化儲存框架的使用。 點選【Create a new Xcode project】建立一個新的專案 ->【Single View App】選擇建立一個簡單的單檢視應用->【Next】 【Product Name】:CoreDataProject 勾選使用

[Xcode10 實際操作]七、檔案與資料-(12)資料持久化儲存框架CoreData的使用:查詢CoreData中的資料

本文將演示如何查詢資料持久化物件。 在專案導航區,開啟檢視控制器的程式碼檔案【ViewController.swift】 1 import UIKit 2 //引入資料持久化儲存框架【CoreData】 3 import CoreData 4 5 class ViewContro

iOS資料持久化儲存:歸檔

在平時的iOS開發中,我們經常用到的資料持久化儲存方式大概主要有:NSUserDefaults(plist),檔案,資料庫,歸檔。。前三種比較經常用到,第四種歸檔我個人感覺用的還是比較少的,恰恰因為用的比較少,但是還是有地方要用到,所以今天再把歸檔解檔複習一遍吧。 一、什麼是歸檔:   物件歸檔是將物件以

Unity3D遊戲開發資料持久化PlayerPrefs的使用

1、Unity3D中的資料持久化是以鍵值的形式儲存的,可以看作是一個字典。 2、Unity3D中值是通過鍵名來讀取的,當值不存在時,返回預設值。 目前,在Unity3D中只支援int、string、float三種資料型別的讀取,所以我們可以使用這三種資料型別來儲存簡單的資料。目前Unity3D中用於資料持

python 基礎之資料持久化儲存

###資料持久化儲存 - 說明:持久化儲存方案,普通檔案、資料庫、序列化 - 示例: ```python import pickle class Person: def __init__(self, name, age): self.name = na

iOS 開發學習資料整理(持續更新)

https://segmentfault.com/a/1190000002473595#articleHeader16 https://github.com/Tim9Liu9/TimLiu-iOS https://github.com/ipader/SwiftGuide 部落格園: http://w

iOS開發 -product資料夾下有兩個相同的.app檔案怎麼辦,該怎麼刪除

由於某種操作,導致product資料夾下出現了兩個相同的.app檔案: 你會發現刪不掉,不知道去哪刪,也找不到對應的資料夾,系統報錯說存在兩個相同的.app檔案,這時候普通的刪除方法肯定是不行的,因為這個屬於系統的配置,需要到配置中刪除,開啟你的工程檔案,右鍵顯示包內容,開啟後使用Xc

IOS開發資料的時候介面的顯示問題

首先我說一下我的思路:先自定義一個cell我在這裡命名為CarsourseEmptyCell,在網路請求結束後再給tableview新增delegate=self、dataSource=self。這樣做的原因是避免一斤介面就顯示的是空介面。然後請求到資料後[tablevie

iOS開發網路資料之AFNetworking使用

如何選擇AFNetworking版本 官網下載2.5版本:http://afnetworking.com/ 此文章基於AFNetworking2.0,如果您使用的是2.5版本的,請看這篇文章:AFNetworking2.5使用 首先得下載AFNetworking庫檔案,下載

eos原始碼賞析(十三):EOS智慧合約資料持久化儲存(上)

前面的文章(eos原始碼賞析(十):EOS智慧合約入門之區塊上鍊)中提到了fork_db,區塊生產之後會將區塊的狀態資訊等儲存在fork_db中,但是當這個動作完成之後,fork_db中的內容就會變化,用來儲存下一個區塊的狀態資訊,並不能實現對歷史區塊資訊的儲存。對於區塊鏈來

iOS開發中使用NSUserDefaults儲存的物件變成null的解決辦法

問題描述:         在除錯專案的時候遇到的問題,用NSUserDefaults將一個字串寫在本地,然後就重新執行程式,但是此時用NSUserDefaults取到的值為null。 原因分析:  

OC-NSUserDefaults(簡單資料持久化儲存機制)

//將值放到一箇中間位置,任何物件都可以訪問該位置(單例,資料庫,檔案系統) // NSUserDefaults:使用者預設設定,可以作為簡單資料的持久化儲存機制,基於檔案系統(就是一直存在的) //NSUserDefa

餓了麼開源專案:便捷高效的Android資料持久化儲存框架

版權所有。所有權利保留。 歡迎轉載,轉載時請註明出處: Android應用開發時經常要對許多資料進行持久化儲存,便於以後訪問。 對於int、double、boolean這些基本資料,可以使用SharedPreference。對於一些物件,往SharedPrefe

iOS開發系列--資料存取

  概覽 在iOS開發中資料儲存的方式可以歸納為兩類:一類是儲存為檔案,另一類是儲存到資料庫。例如前面IOS開發系列—Objective-C之Foundation框架的文章中提到歸檔、plist檔案儲存,包括偏好設定其本質都是儲存為檔案,只是說歸檔或者plist檔案儲存可以選

iOS開發網路資料之AFNetworking使用(2.0)

如何選擇AFNetworking版本 官網下載2.5版本:http://afnetworking.com/ 此文章基於AFNetworking2.0,如果您使用的是2.5版本的,請看這篇文章:AFNetworking2.5使用 首先得下載AFNetworking庫檔

ios開發 json資料檔案的存取

將Json存進本地資料夾 NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);     NSString *path=[paths objectAtIndex:0];

prometheus基於influxdb的監控資料持久化儲存方案

用prometheus在線上跑了兩年了,都是用的本地磁碟做資料儲存,磁碟空間有限,當空間不足時直接刪除資料檔案。近期監控系統正式上

iOS開發簡記(8):資料持久化

資料持久化,也就是把資料儲存到磁碟,以後可以再讀取出來使用(也可以再次更改或刪除)。很多場景需要資料持久化,比如為了減輕伺服器的訪問與儲存壓力,客戶端需要在本地做一些資料持久化的工作。 iOS的資料持久化,有幾種方式,包括:自定義格式的檔案、plist、CoreData、FMDB等等。 這裡