① 如何使用Core Data
Core Data是iOS5之後才出現的一個框架,它提供了對象-關系映射(ORM)的功能,即能夠將OC對象轉化成數據,保存在sqlite資料庫文件中,也能夠將保存在資料庫中的數據還原成OC對象。在此數據操作期間,我們不需要編寫任何SQL語句,這個有點類似於著名的Hibernate持久化框架,不過功能肯定是沒有Hibernate強大的。簡單地用下圖描述下它的作用:
左邊是關系模型,即資料庫,資料庫裡面有張person表,person表裡面有id、name、age三個欄位,而且有2條記錄;
右邊是對象模型,可以看到,有2個OC對象;
利用Core Data框架,我們就可以輕松地將資料庫裡面的2條記錄轉換成2個OC對象,也可以輕松地將2個OC對象保存到資料庫中,變成2條表記錄,而且不用寫一條SQL語句。
② ios開發 什麼情況要用到資料庫
第一,我不是高手,第二,我可以分享下我的心得。一般的數據量很小的項目,沒必要使用資料庫,如果只是保存寫用戶信息,大可以用其他的方法,用keychain或者nsuserdefault或者其他的都可以。任何一個項目都需要保存一個使用狀態,不能每次打開項目的時候都和第一次運行一樣,完全新,要給人以使用過的感覺就要存儲一些歷史數據。如果怕影響用戶體驗的話,可以多開線程在後台去對數據操作(數據量大的情況下),記得對線程要回收。如果你對保存數據比較迷茫的話,你可以google一下ios的四種數據持久化,對於sqlite和coredata,我個人認為只是兩種不同的存儲方法,一種是小型輕量級sqlite資料庫,所有移動設備經常用到的,還有一種是蘋果針對ios操作系統開發的coredata數據存儲,具體孰勝孰略還有待你自己去了解,一般如果我的資料庫要非常多的表格互相關聯最後查詢一條結果那麼我會採用sqlite,如果存儲一些有規律的數據那麼我會採用coredata,沒有哪個更好的說法,只能說這兩種都各有千秋,而我聽前輩們說,coredata只是蘋果對sqlite的又一次封裝而已,方便操作但也局限操作
③ 請教iOS資料庫coredata多版本升級問題
搜扣丁堂關於iOSCoreData講解: Core Data數據持久化SQLite升級ios集說Core Data前我先說說CoreData使用幾類 (1)NSManagedObjectModel(管理象模型) 相於實體包含 實體間關系 (2)NSManagedObjectContext(管理象文) 操作實際內容 作用:插入數據 查詢 更新 刪除 (3)NSPersistentStoreCoordinator(持久化存儲助理) 相於資料庫連接器 (4)NSFetchRequest(獲取數據請求) 相於查詢語句 (5)NSPredicate(相於查詢條件) (6)NSEntityDescription(實體結構) (7)綴名.xcdatamodel包 面.xcdatamodel文件用數據模型編輯器編輯 編譯.momd或.mom文件文件沒東西我程序用東西報錯原
-
④ 問題如下 菜鳥求教啊
1.Object-c的類可以多重繼承么?可以實現多個介面么?Category是什麼?重寫一個類的方式用繼承好還是分類好?為什麼?
2.#import 跟#include 又什麼區別,@class呢;#import<> 跟 #import」"又什麼區別?
3.屬性readwrite,readonly,assign,retain,,nonatomic 各是什麼作用,在那種情況下用?
4.id 聲明的對象有什麼特性?
5.MVC是什麼?有什麼特性?為什麼在iphone上被廣泛運用?
6.對於語句NSString* testObject = [[NSData alloc] init];testObject 在編譯時和運行時分別時什麼類型的對象?
7.什麼是安全釋放?
8.為什麼有些4.0獨有的objective-c 函數在3.1上運行時會報錯.而4.0獨有的類在3.1上分配內存時不會報錯?分配的結果是什麼?
9.為什麼4.0獨有的c函數在3.1的機器上運行不會報錯(在沒有調用的情況下?)而4.0獨有的類名在3.1的機器上一運行就報錯?
10.常見的object-c的數據類型有那些, 和 c 的 基本數據類型有什麼區別?如:nsinteger 和int
11.property中屬性retain,,assgin的含義分別是什麼?有什麼區別?將其轉換成get/set方法怎麼做?有什麼注意事項?
12.委託是什麼?委託的property聲明用什麼屬性?為什麼?
13.淺拷貝和深拷貝區別是什麼?…
14.NSString 和 NSMutableString 有什麼區別?
15.自動釋放池跟GC有什麼區別?iphone上有GC么?[pool release] 和[pool drain]有什麼區別?
16.
for(int index = 0; index < 20; index ++){
NSString *tempStr = @」tempStr」;
NSLog(tempStr);
NSNumber *tempNumber = [NSNumber numberWithInt:2];
NSLog(tempNumber);
}
這段代碼有什麼問題.?會不會造成內存泄露(多線程)?在內存緊張的設備上做大循環時自動釋放池是寫在循環內好還是循環外好?為什麼?
17.內存管理的幾條原則時什麼?按照默認法則.那些關鍵字生成的對象需要手動釋放?在和property結合的時候怎樣有效的避免內存泄露?
18.在一個對象釋放前.如果他被加到了notificationCenter 中.不在notificationcenter中remove這個對象可能會出現什麼問題?
19.怎樣實現一個 singleton的類.給出思路。
20.什麼是序列化或者Acrchiving,可以用來做什麼,怎樣與結合,原理是什麼?.
21.線程是什麼? 有哪些注意事項.?
22.在iphone上有兩件事情要做,請問是在一個線程里按順序做效率高還是兩個線程里做效率高?為什麼?
23.runloop是什麼?在主線程中的某個函數里調用了非同步函數,怎麼樣block當前線程,且還能響應當前線程的timer事件,touch事件等.
24.ios平台怎麼做數據的持久化?coredata和sqlite有無必然聯系?coredata是一個關系型資料庫嗎?
25.闡述一個nil對象從interface bulider產生,到載入程序運行空間,最後被釋放時所經歷的生命周期.
26.notification是同步還是非同步? kvo是同步還是非同步?notification是全進程空間的通知嗎?kvo呢?
27.kvc是什麼?kvo是什麼?有什麼特性?
28.響應者鏈是什麼?
29.unix上進程怎麼通信?
30.timer的間隔周期准嗎?為什麼?怎樣實現一個精準的timer?
31.UIscrollVew用到了什麼設計模式?還能再foundation庫中找到類似的嗎?
32.如果要開發一個類似eclipse的軟體,支持插件結構。且開放給第三方開發。你會怎樣去設計它?(大概思路)
33.線程和進程的區別和聯系?
34.C和obj-c 如何混用?
35.以下每行代碼執行後,person對象的retain count分別是多少
person *person = [[person alloc] init]; // count 1
[person retain]; // count 2
[person release]; //count 1
[person release]; //retain count = 1;
36.ViewController 的 loadView, viewDidLoad, viewDidUnload 分別是在什麼時候調用的?
37.ViewController 的 didReceiveMemoryWarning 是在什麼時候被調用的?
38.ios5新特性有那些?
39.談談你對ARC 的認識和理解?
⑤ 獲取聊天記錄是從coreData中獲取嗎
coredata其實也是用sqlite來存儲數據,是對sqlite的封裝。不過蘋果稱其不是關系型的。
相對於數據表的對應:
表格結構:NSEntityDescription
資料庫中所有表格和他們的聯系:NSManagedObjectModel
資料庫存放方式:NSPersistentStoreCoordinator
資料庫操作: NSManagedObjectContext
查詢語句: NSFetchRequest
表格的記錄: NSManagedObject
通常定義model, 是用文件CoreData.xcdatamodel,可以圖形化的操作。
NSPersistentStoreCoordinator類的對象通常用NSManagedObjectModel的對象來初始化, 這個類抽象出不同的存放方式,最經常用的是NSSQLiteStoreType。
NSManagedObjectContext類的對象又用NSPersistentStoreCoordinator的對象來初始化, 它裡面有些方法來添加、刪除NSManagedObject。
NSFetchRequest類通常用NSEntityDescription來構造查詢,也可以指定排序。
NSFetchedResultsController類,只是又封了一下, 和NSFetchRequest合起來使用, 方便取數據。另外和NSManagedObjectContext關聯, 當資料庫發生變化的時候收到通知.
更詳細用法和例子可找書籍來看看吧。
⑥ ios 用什麼工具查看coredata資料庫
Core Data 簡介
• Core Data 是 iOS SDK 里的一個很強大的框架,允許程序員 以面向對象 的方式儲存和管理數據 。使用 Core Data 框架,程序員可以很輕松有效 地通過面向對象的介面管理數據
• Core Data 框架提供了 對象 - 關系映射 (ORM) 的功能,即能夠將 OC 對象轉 化成數據,保存在 SQLite3 資料庫文件中,也能夠將保存在資料庫中的 數據還原成 OC 對象
• 在數據操作過程中,無需編寫任何 SQL 語句
• 要使用 Core Data , 需要導入 CoreData 框架
⑦ 在ios開發中coredata與sqlite資料庫操作有什麼優勢
轉載 sqlite資料庫操作的基本流程是, 創建資料庫, 再通過定義一些欄位來定義表格結構, 可以利用sql語句向表格中插入記錄, 刪除記錄, 修改記錄, 表格之間也可以建立聯系。
這個過程出現了, 表格的結構(schema), 所有表格的結構和相互聯系構成整個資料庫的模型, 資料庫存放的方式(可以是文件或者在內存), 資料庫操作, sql語句(主要是查詢), 表格裡面的記錄。
下面將上面說的文字, 跟CoreData的類作個對應:
表格結構 --> NSEntityDescription
資料庫中所有表格和他們的聯系 -->NSManagedObjectModel
資料庫存放方式 --> NSPersistentStoreCoordinator
資料庫操作 --> NSManagedObjectContext
查詢語句 --> NSFetchRequest
表格的記錄 --> NSManagedObject
可能上面的對應關系並非十分嚴格, 但確實可以幫助理解.
下面再看看CoreData的類
NSEntityDescription
NSManagedObjectModel
NSEntityDescription用來定義表格結構, 所以你就可以理解NSManagedObjectModel中的setEntities:(NSArray *)entities函數大概有什麼用了 . 通常, 定義model, 是用文件CoreData.xcda*****odel, 可以圖形化的操作. 這類似用nib來創建界面.
建個工程, 使用coredata, 模擬器運行之後, 程序對應的document目錄出現一個CoreData.sqlite. 可以利用sqlite3命令來查看裡面的表格結構
用命令行sqlite3 CoreData.sqlite 進入
>.tables
ZEVENT Z_METADATA Z_PRIMARYKEY
可以看到有表格ZEVENT, 對應的CoreData.xcda*****odel文件有名字叫Event的Entity
>.schema ZEVENT
CREATE TABLE ZEVENT ( Z_PK INTEGER PRIMARY KEY, Z_ENT INTEGER, Z_OPT INTEGER, ZTIMES*****P TIMES*****P );
對應的Event中有屬性timeS*****p, 可以看到, 相應的ZEVENT表格中有欄位TIMES*****P
> select * from ZEVENT
1|1|1|306295807.974966
2|1|1|306295810.981875
3|1|1|306295811.982537
這表格有三個記錄, 可以用來初始化三個NSManagedObject, 修改了NSManagedObject, save之後也修改了表格記錄
你可以在CoreData.xcda*****odel添加新的entity, 之後用sqlit3命令來查看資料庫的變化
NSPersistentStoreCoordinator
這個類的對象通常用NSManagedObjectModel的對象來初始化, 這個類抽象出不同的存放方式, 最經常用的是NSSQLiteStoreType.
NSManagedObjectContext
這個類的對象又用NSPersistentStoreCoordinator的對象來初始化, 它裡面有些方法來添加, 刪除NSManagedObject
NSFetchRequest
通常用NSEntityDescription來構造查詢, 也就指定查詢那個表格, 另外可以指定排序.
在CoreData的設計中, 下一層有相應的屬性指向上一層, 所以NSManagedObject有屬性得到NSEntityDescription, NSEntityDescription有屬性得到NSManagedObjectModel.
至於類
NSFetchedResultsController, 只是又封了一下, 和NSFetchRequest合起來使用, 方便取數據, 另外和NSManagedObjectContext關聯, 當資料庫發生變化的時候收到通知.
這文章只初步梳理了一下CoreData各類的關系, 各類的方法還需要一一研究. 文章最開始說CoreData是對sqlite資料庫的一個封裝, 不是嚴格的, CoreData不一定用sqlit來實現, 但他們之間確實有種對應關系。