IOS成長之路-Core Data使用時用到的類–微解

來源:互聯網
上載者:User
表格結構:NSEntityDescription 相當於資料庫中的一個表,TA描述一種抽象資料類型eg://+insertNewObjectForEntityForName:inManagedObjectContext: Factory 方法,根據給定的 Entity 描述,產生相應的 NSManagedObject 對象,並插入到 ManagedObjectContext 中Student *student = [NSEntityDescription insertNewObjectForEntityForName:@"Student" inManagedObjectContext:managedObjectContext];//通過上面的代碼可以得到student這個表的執行個體,然後可以使用這個執行個體去為表中的屬性賦值student.name = @"like"; student.age = 12;應用程式的資料模型,資料庫中所有表格和他們之間的聯絡:NSManagedObjectModel//系統會讀取model檔案來聲稱NSManagedObjectModel對象,model :對於class,model稱之為 entity; 對於instant variable, model 稱之為propertymodel包含兩種property: attributes 和 relationships. attribute為單一資料型別,如一個字串,日期,數字NSManagedObjectModel   * model    = [self managedObjectModel];//擷取執行個體NSDictionary           * entities = [model entitiesByName];//entitiesByName 得到所有的表的名字NSEntityDescription    * entity   = [entities valueForKey:@"Student"];//從裡面找出名為 Student 的表資料庫存放方式:NSPersistentStoreCoordinator //使用 Core Data document 類型的應用程式,通常會從磁碟上的資料文中中讀取或儲存資料,這寫底層的讀寫就由 Persistent Store Coordinator 來處理。一般我們無需與它直接打交道來讀寫檔案,Managed Object Context 在背後已經為我們調用 Persistent Store Coordinator 做了這部分工作資料庫操作:NSManagedObjectContext 被管理的物件內容(對資料直接操作)//可以通過TA去訪問底層的架構對象集合,這些對象集合統稱為持久化堆棧(persistence stack)——它在應用程式和外部資料儲存的對象之間提供訪問通道//Managed Object Context 的作用相當重要,對資料對象進行的操作都與它有關。當建立一個資料對象並插入 Managed Object Context 中,Managed Object Context 就開始跟蹤這個資料對象的一切變動,並在合適的時候提供對 undo/redo 的支援,或調用 Persistent Store Coordinato 將變化儲存到資料檔案中去//redo: 恢複已經提交的事務  undo: 復原操作,支援讀一致性,恢複失敗的交易//-executeFetchRequest: error:執行 Fetch Request 並返回所有匹配的資料對象NSFetchRequest * fetch = [[NSFetchRequest alloc] init];NSArray * results = [context executeFetchRequest:fetch error:nil];//擷取NSManagedObjectContext的執行個體//1.利用UIApplication代理擷取id delegate = [[UIApplication sharedApplication] delegate];self.managedObjectContext = [delegate managedObjectContext];//2.直接去建立執行個體NSManagedObjectContext *context = [self managedObjectContext];//利用getter方法來擷取查詢語句:NSPetchRequest  相當於select語句//Fetch Requests 相當於一個查詢語句,你必須指定要查詢的 Entity。我們通過 Fetch Requests 向 Managed Object Context 查詢合格資料對象,以 NSArray 形式返回查詢結果,如果我們沒有設定任何查詢條件,則返回該 Entity 的所有資料對象。我們可以使用謂詞來設定查詢條件,通常會將常用的 Fetch Requests 儲存到 dictionary 以重複利用NSPredicate * predicate = [NSPredicate predicateWithFormat:@"xx > %@", xx];//相當於select中的查詢條件NSSortDescriptor * sort = [[NSortDescriptor alloc] initWithKey:@"name"];//按照 name 來排序NSArray * sortDescriptors = [NSArray arrayWithObject: sort];//            -setEntity:設定你要查詢的資料對象的類型(Entity)就是NSEntityDescription對象//            -setPredicate:設定查詢條件//            -setFetchLimit:設定最大查詢對象數目//            -setSortDescriptors:設定查詢結果的排序方法//            -setAffectedStores:設定可以在哪些資料存放區中查詢表格的記錄:NSManagedObject    Core Data儲存的每個對象都繼承自NSManagedObject,我們可以得到TA的一個執行個體,用這個執行個體去為表中的屬性賦值eg:NSManagedObject *managedObject  = [NSEntityDescription insertNewObjectForEntityForName:@"Student" inManagedObjectContext:managedObjectContext];managedObject.name = @"like";  managedObject.age = 12;

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.