coreData

CoreData使用

  • 創建步驟流程
    • 第一步先創建.xcdatamodeld文件(New File -> iOS -> Core Data ->Data Model)

屏幕快照 2016-07-07 下午10.40.16.png

名字雖然可以任意取,但最好還是取和自己存儲數據庫名字一樣的名字。這樣可讀性更高些。(ps:這個文件就相當于數據庫文件一樣,數據庫文件中可以有多個表,表中可以有各個字段值,這里也可以有多個實體,每個實體有各個鍵值)


屏幕快照 2016-07-07 下午10.40.40.png

通過上面的操作就可以創建一個.xcdatamodeld文件,現在我們點擊這個文件,在最下面找到Add Entity按鈕,進行實體添加。


屏幕快照 2016-07-13 下午8.50.10.png

現在我們添加了一個名字為Entity的實體,這個名字是默認名字,現在我們可以對他進行名字的更改,對它雙擊一下即可修改名字,或者在xcode右邊的信息欄中也可以修改


屏幕快照 2016-07-13 下午9.09.38.png

通過上面操作我們已經創建好了實體的名字,現在我們需要往實體中添加我們需要的鍵值。(ps:相當于數據庫表中的字段),具體操作看圖說話(實體之間的關聯我就不介紹了,有興趣的可以自行搜索資料,個人覺得會了單個實體創建外加查詢就行,關聯也無非是找到關聯的實體中共同的鍵值從而取得另外一個實體對象,我們可以直接先從一個實體取得指定鍵值對應的屬性,再通過屬性值去查詢另一個實體,只是沒關聯的那么方便而已)。


屏幕快照 2016-07-13 下午9.17.43.png
  • 第二步創建關聯類來操控CoreData實體對象(選中.xcdatamodeld文件->xcode菜單欄->Edit->Create NSManagedObject Subclass)

屏幕快照 2016-07-13 下午9.35.57.png

選中自己需要關聯的.xcdatamodeld文件名稱,點擊下一步即可。


屏幕快照 2016-07-13 下午9.47.24.png

選中.xcdatamodeld文件中需要關聯的實體對象,點擊下一步然后在選擇存儲目錄即可。




完成后會發現自動生成了實體名稱對應的類和擴展類(Entity.h/.m和Entity+CoreDataProperties.h/.m)




Relationships類似于SQLite的外鍵,定義了在同一個模型中,實體與實體之間的關系。可以定義為對一關系或對多關系,也可以定義單向或雙向的關系,根據需求來確定。如果是對多的關系,默認是使用NSSet集合來存儲模型。

Inverse是兩個實體在Relationships中設置關聯關系后,通過設置inverse為對應的實體,這樣可以從一個實體找到另一個實體,使兩個實體具有雙向的關聯關系。


//

//? ViewController.m

//? CoreDataDemo

// ?

//? Created by pk on 14/10/24.

//? Copyright (c) 2014 pk. All rights reserved.

//


#import "ViewController.h"

#import <CoreData/CoreData.h>

#import "User.h"

#import "WuGong.h"


@interface ViewController (){

? ? IBOutlet UITextField* _nameField;

? ? IBOutlet UITextField* _scoreField;

? ? //管理者上下文,我們直接調用的類

? ? NSManagedObjectContext* _context;

}


- (IBAction)add:(id)sender;

- (IBAction)fetch:(id)sender;


@end


@implementation ViewController


- (void)viewDidLoad {

? ? [super viewDidLoad];


? ? _context = [[NSManagedObjectContextalloc] init];

? ? //user模型

? ? NSManagedObjectModel* user = [NSManagedObjectModelmergedModelFromBundles:nil];

? ? //協調者

? ? NSPersistentStoreCoordinator* coordinator = [[NSPersistentStoreCoordinatoralloc] initWithManagedObjectModel:user];

? ? //儲存方式

? ? NSString* path = [NSHomeDirectory()stringByAppendingPathComponent:@"Documents/abcd.db"];

? ? [coordinator addPersistentStoreWithType:NSSQLiteStoreTypeconfiguration:nilURL:[NSURLfileURLWithPath:path] options:nilerror:nil];

? ? _context.persistentStoreCoordinator = coordinator;

}


- (void)add:(id)sender{

? ? User* user = [NSEntityDescriptioninsertNewObjectForEntityForName:@"User"inManagedObjectContext:_context];

? ? user.name = _nameField.text;

? ? user.score = [NSNumbernumberWithInt:[_scoreField.textintValue]];

? ? user.wugong = [NSEntityDescriptioninsertNewObjectForEntityForName:@"WuGong"inManagedObjectContext:_context];

? ? user.wugong.name =@"葵花寶典";

?? ?

? ? //保存

? ? if ([_contextsave:nil]) {

? ? ? ? NSLog(@"保存成功");

? ? } else {

? ? ? ? NSLog(@"保存失敗");

? ? }

}


- (void)fetch:(id)sender{

? ? //查詢請求

? ? NSFetchRequest* request = [[NSFetchRequestalloc] init];

? ? //關聯要查詢的實體

? ? NSEntityDescription* entity = [NSEntityDescriptionentityForName:@"User"inManagedObjectContext:_context];

? ? [request setEntity:entity];

?? ?

? ? //指定對結果的排序方式

? ? NSSortDescriptor* sortDescriptor = [[NSSortDescriptoralloc] initWithKey:@"name"ascending:YES];

? ? NSArray* sortDescriptions = [[NSArrayalloc] initWithObjects:sortDescriptor,nil];

? ? [request setSortDescriptors:sortDescriptions];

?? ?

? ? //開始查詢

? ? NSArray* array = [_contextexecuteFetchRequest:request error:nil];

? ? for (User* userin array) {

? ? ? ? NSLog(@"%@-%@-%@", user.name, user.score, user.wugong.name);

//? ? ? ? if ([user.name isEqualToString:@"haha"]) {

//? ? ? ? ? ? user.score = @90;

//? ? ? ? ? ? [_context save:nil];

? ? ? ? ? ? [_context deleteObject:user];

//? ? ? ? }

? ? }

}






@end





本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/458449.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/458449.shtml
英文地址,請注明出處:http://en.pswp.cn/news/458449.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

命令行下mysql新建用戶及分配權限

創建用戶&#xff1a; CREATE USER usernamehost IDENTIFIED BY password; 說明:username – 你將創建的用戶名, host – 指定該用戶在哪個主機上可以登陸,如果是本地用戶可用localhost, 如 果想讓該用戶可以從任意遠程主機登陸,可以使用通配符%. password – 該用戶的登陸密…

PetaPoco初體驗(轉)

PetaPoco初體驗&#xff08;轉&#xff09; PetaPoco初體驗&#xff08;轉&#xff09;大部分轉自&#xff1a; http://landyer.com/archives/138 PetaPoco C#微型ORM框架&#xff0c;基本無需配置&#xff0c;僅由單個cs文件構成&#xff0c;支持.net3.5 .net4.0。 截稿時Peta…

iOS當中的設計模式

代理模式 應用場景&#xff1a;當一個類的某些功能需要由別的類來實現&#xff0c;但是又不確定具體會是哪個類實現。 優勢&#xff1a;解耦合 敏捷原則&#xff1a;開放-封閉原則 實例&#xff1a;tableview的 數據源delegate&#xff0c;通過和protocol的配合&#xff0c…

c#的dllimport使用方法詳解

DllImport是System.Runtime.InteropServices命名空間下的一個屬性類&#xff0c;其功能是提供從非托管DLL&#xff08;托管/非托管是微軟的.net framework中特有的概念&#xff0c;其中&#xff0c;非托管代碼也叫本地&#xff08;native&#xff09;代碼。與Java中的機制類似&…

each函數循環數據表示列舉,列舉循環的時候添加dom的方法

var dotBox $(#bannerNum);var item <li></li>;var itemSize $(#bannerBack p).length;var dotBoxWidth itemSize*24;$(#bannerBack p).each(function () { dotBox.append(<li></li>); dotBox.find(li).eq(0).addClass(current);});這里要根…

使用lxml代替beautifulsoup

深入使用過lxml的都會深深地喜歡上它,雖然BeautifulSoup很流行,但是深入了解lxml后,你就再也不會使用bs了 我覺得beautifulsoup不好用,速度也慢(雖然可以使用lxml作為解析器了).另外soup.find_all這種簡直就是手工時代的操作(很多人使用find find_all這幾個函數, 其實它們使用起…

QT調用dll且進入DLL src code調試

qt應用程序AA.exe調用qt寫的BB.DLL時&#xff0c;進入BB.DLL src code調試 1、debug生成AA.exe 2、將debug生成的AA.exe整包debug folder放到BB.dll的debug生成的文件夾中 3、設置BB.dll這個project&#xff1a;項目----運行-----Executable中選擇BB.dll的debug文件夾中的AA.ex…

php安裝編譯時 configure: error: Cannot find OpenSSL's evp.h

yum install error: protected multilib versions errorsudo yum downgrade openssl 降級sudo yum install openssl-devel 另外參考yum install -y ncurses-devel yum install openssl openssl-develyum install openssl openssl-devel --setoptprotected_multilibfalse ln -s …

laravel項目中css樣式表的背景圖片不顯示

剛學laravel&#xff0c;遇到了很多坑&#xff0c;感覺laravel是挺強大的。 建好后臺項目&#xff0c;奈何css樣式表的背景圖片不顯示 .mainhd {background: url(../images/sky/body_bg.png) repeat-x 0px 0px; } 按理上面的寫法沒錯&#xff0c;因為是從別的后臺搬過來的&…

KVC KVO

1、KVC&#xff0c;即是指 NSKeyValueCoding&#xff0c;一個非正式的Protocol&#xff0c;提供一種機制來間接訪問對象的屬性。而不是通過調用Setter、Getter方法訪問。KVO 就是基于 KVC 實現的關鍵技術之一。 Demo&#xff1a; interface myPerson : NSObject { …

VS2010中 C++創建DLL圖解

一、DLL的創建 創建項目: Win32->Win32項目&#xff0c;名稱&#xff1a;MyDLL 選擇DLL (D) ->完成. 1、新建頭文件testdll.htestdll.h代碼如下&#xff1a;#ifndef TestDll_H_#define TestDll_H_#ifdef MYLIBDLL#define MYLIBDLL extern "C" _declspec(dllimp…

js理解 call( ) | apply( ) | caller( ) | callee( )

被js的這幾個方法搞的this暈頭轉向&#xff0c;下定決心搞清楚&#xff1b;1、call( )和apply( ):兩者都可以將函數綁定到另外一個對象上去運行&#xff0c;只是參數的傳遞方式不同&#xff0c;兩者都可以使當前函數擁有另一個對象的屬性和方法&#xff0c;實現js下的繼承&…

上傳SVN丟失.a文件的問題

iOS項目上傳到svn中&#xff0c;.a文件丟失 用Cornerstone工具&#xff0c;解決這個問題 1.打開Cornerstone左上角&#xff0c;點Cornerstone->Preferences->Subversion 2.Global lgnores下面有一個Use default global ignores 默認這里方框中會打鉤&#xff08;這就是.a…

使用公用表表達式的遞歸查詢

微軟從SQL2005起引入了CTE(Common Table Expression)以強化T-SQL。公用表表達式 (CTE) 具有一個重要的長處&#xff0c;那就是可以引用其自身。從而創建遞歸 CTE。遞歸 CTE 是一個反復運行初始 CTE 以返回數據子集直到獲取完整結果集的公用表表達式。 當某個查詢引用遞歸 CTE 時…

C#委托實現C++ Dll中的回調函數

from:https://blog.csdn.net/ferrycooper/article/details/63261771很多的Dll都是C和C寫的&#xff0c;那么如果C#想要調用Dll中的函數怎么辦&#xff0c;尤其是Dll函數其中一個參數是函數指針的&#xff0c;即里面有回掉函數的用C#怎么實現&#xff1f; C中的回掉函數在C#中有…

安裝Birt方法

安裝BIRT 方法&#xff1a; 博客地址&#xff1a;http://www.mamicode.com/info-detail-850588.html 注意&#xff1a;在 Install new Software 中輸入地址&#xff1a;http://download.eclipse.org/birt/update-site/4.2-interim 看好了 出來的四項要全部選中 &#xff0c;然后…

iOS NSString和NSDate轉換

后臺返回的時間字符串不是標準的時間而是計算機時間的時候&#xff0c;我們需要將它們轉換為標準時間&#xff0c;再進行轉換。 //字符串轉為時間&#xff0c;時間格式自己定 NSString * time "1501776000"; //時間字符串 NSInteger num [time integerValue]; …

15個最好的HTML5前端響應式框架(2014)

文中的多個框架基于SASS創建&#xff0c;SCSS是一種比LESS更簡潔的樣式表編程語言&#xff0c;它能夠編繹成CSS&#xff0c;可復用CSS代碼&#xff0c;聲明變量&#xff0c;甚至是函數&#xff0c;類Ruby/Python的語法。參見&#xff1a; LESS vs SASS&#xff1f;選擇哪種CSS樣…

DLL導出類和導出函數

from:https://blog.csdn.net/goodluckmt/article/details/526912971、動態庫DLL中的類或者函數有時候要被其他的庫調用&#xff0c;因此需要被其他庫調用的類或者函數需要進行導出。 2、首先編寫需要導出的DLL&#xff0c;新建一個工程設置應用程序類型為DLL3、類的代碼如下 頭…

Nginx做web服務器linux內核參數優化

Nginx做web服務器linux內核參數優化Nginx提供web服務時Linux內核參數調整是必不可少的&#xff0c;其中在優化方面就需要我們格外的注意。在下面就是對Linux內核參數優化的詳細介紹&#xff0c;希望大家有所收獲。關于Linux內核參數的優化&#xff1a;net.ipv4.tcp_max_tw_buck…