`
dcj3sjt126com
  • 浏览: 1871542 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Core Data浅谈系列之四 : 数据模型的版本变迁

    博客分类:
  • IOS
阅读更多
上一篇文章末尾提到的,一支队伍可以添加多名球员,不过一名球员只能属于一支队伍中,这分别对应着Core Data中一对多和一对一的属性关系:
 

 

 
如上两图,是在Team实体里面添加了一个players关系,指向Player实体,可以一支球队关联多名球员,并且最多只允许关联15名球员。
同样地,也为Player实体添加team关系,指向Team实体:

 
一名球员只能关联一支球队,并且让这个关系成双向的,即一个Player对象属于某支球队时,该球队的players属性就自动关联该Player对象。
 
做完以上对表关系的修改,再次运行程序。
Oops,运行不起来——
[plain] view plaincopy
  1. 2013-01-16 16:56:18.667 cdNBA[18591:c07] Error : The operation couldn’t be completed. (Cocoa error 134100.)  
  2. 2013-01-16 16:56:18.670 cdNBA[18591:c07] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'This NSPersistentStoreCoordinator has no persistent stores.  It cannot perform a save operation.'  
这是由于我们刚才做了一番修改,persistentStoreCoordinator无法适应新的数据模型。
当开启一个新版本时,如果数据模型发生变动,我们需要创建一个新版本使用的数据模型:

 
并将其设置为当前版本使用的数据模型:

 

 
So,我们刚才发生的变动都应该应用在cdNBA 2.xcdatamodel上。
除此之外,还需要在persistentStoreCoordinator添加存储文件时设置一个选项:
  1. - (NSPersistentStoreCoordinator *)persistentStoreCoordinator  
  2. {  
  3.     if (nil != _persistentStoreCoordinator) {  
  4.         return_persistentStoreCoordinator;  
  5.     }  
  6.       
  7.     NSString *storeType = NSSQLiteStoreType;  
  8.     NSString *storeName = @"cdNBA.sqlite";  
  9.       
  10.     NSError *error = NULL;  
  11.     NSURL *storeURL = [NSURLfileURLWithPath:[[selfapplicationDocumentsDirectory] stringByAppendingPathComponent:storeName]];  
  12.       
  13.     NSDictionary *options = [NSDictionarydictionaryWithObjectsAndKeys:  
  14.      [NSNumbernumberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,  
  15.      [NSNumbernumberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];  
  16.       
  17.     _persistentStoreCoordinator = [[NSPersistentStoreCoordinatoralloc] initWithManagedObjectModel:self.managedObjectModel];  
  18.     if (![_persistentStoreCoordinator addPersistentStoreWithType:storeType configuration:nilURL:storeURL options:options error:&error]) {  
  19.         NSLog(@"Error : %@\n", [error localizedDescription]);  
  20.         NSAssert1(YES, @"Failed to create store %@ with NSSQLiteStoreType", [storeURL path]);  
  21.     }  
  22.       
  23.     return _persistentStoreCoordinator;  
  24. }  
做完上面的工作,再跑一遍Demo。

 

分享到:
评论

相关推荐

    Core Data: Updated for Swift 3

    ### Core Data: 更新至 Swift 3 #### 一、引言与Swift的融合 本书旨在为读者提供关于如何最大限度地利用Core Data框架的同时避免潜在陷阱的清晰指导。本书假设读者已经熟悉Swift语言及其iOS开发环境,但对于无论是...

    ABAP Core Data Services .pdf

    随着企业数据处理需求的不断增长以及业务复杂性的提升,SAP推出了一种全新的技术——ABAP Core Data Services(简称CDS),旨在帮助开发者更高效地管理数据,并通过标准化的数据模型来提高开发效率及数据一致性。...

    Core Data数据验证

    在iOS应用开发中,Core Data是苹果提供的一种强大的数据持久化框架,用于管理应用程序的数据模型。数据验证是确保数据质量的重要环节,特别是在用户输入数据时,防止无效或不合法的数据进入数据库。本节将深入探讨...

    Core Data by Tutorials

    本书将涉及如何在Core Data中管理不同版本的数据模型,并保证在应用更新过程中数据的完整性和一致性。 知识点六:iCloud同步 苹果的iCloud是现代iOS应用的一个重要组成部分,它可以用来同步用户数据到云端并保持...

    《iOS Core Data高级编程 第二版》两本IOS数据编程之一

    - **数据版本和迁移**:应用程序的数据结构可能会随着版本迭代而发生变化,第八章“Versioning and Migrating Data”讲解了如何处理数据模型的升级,以及数据迁移的方法。 - **使用FetchedResultsController管理...

    Core Data by Tutorials v4.0 (Swift 4)

    1. **模型(Model)**:这是Core Data的核心,定义了应用程序的数据结构和关系。在Xcode中,开发者可以通过图形界面创建实体(Entities),并为实体添加属性(Attributes)和关系(Relationships)。 2. **上下文...

    Core Data in Objective-C Data Storage and Management for iOS and OS X(3rd)

    - Core Data提供了一套完整的迁移机制,可以帮助开发者平滑地过渡到新版本的数据模型。 7. **实时同步** - 对于需要多设备间同步数据的应用场景,Core Data提供了支持实时同步的功能。 - 通过配置合适的同步策略...

    ServiceNow-Data-Model-v3.4 ServiceNow 数据模型CMDB,ITSM 数据模型,ITOM数据模型

    #### 四、服务目录数据模型 服务目录数据模型定义了ServiceNow中提供的服务项目和产品。这对于提供一致的服务体验非常重要。 ##### 关键概念 - **Service Catalog**: 包含了所有可用服务项目的集合。 - **Content...

    列表显示 core data 数据

    在iOS应用开发中,Core Data是苹果提供的一种强大的对象图管理框架,用于处理应用程序的数据模型。它可以帮助我们存储、检索和管理数据,特别是在基于UITableView或UICollectionView的界面中,与Core Data结合使用能...

    Pro Core Data for IOS

    在第四章“Creating a Data Model”中,介绍了如何创建和管理数据模型,这是使用Core Data进行高效数据管理的关键部分。第五章“Working with Data Objects”讲解了如何在应用中操作和管理数据对象,这是日常开发中...

    Core Data by Tutorials v4.0 Source Code (Swift4)

    《Core Data by Tutorials v4.0》是关于苹果开发框架Core Data的一份详细教程,主要针对Swift 4编程语言。Core Data是苹果提供的一种数据管理框架,它为iOS、macOS、watchOS和tvOS应用程序提供了模型层的抽象和管理...

    Core Data 数据操作

    在Core Data中,我们首先需要定义一个数据模型,也就是实体(Entity)。在本例中,可能有一个名为"Item"的实体,包含一些属性如"name"和"description"。使用`NSManagedObject`子类来表示这个实体,然后通过`...

    Core Data - Florian Kugler Daniel Eggert

    - **Core Data架构**:介绍了Core Data的基本组成部分,包括实体(Entity)、属性(Attribute)、关系(Relationship)等概念,以及它们是如何组织在一起形成一个数据模型的。 - **数据建模**:探讨了如何设计有效的数据...

    Core Data By Tutorials

    Core Data提供了数据模型版本管理及迁移的机制,确保旧版本数据可以被新版本的应用访问和处理。 9. **iCloud同步**:如何利用Core Data与iCloud结合,实现数据的云端同步。 10. **单元测试**:单元测试是保证代码...

    Core.Data.Updated.for.Swift.3

    Core Data是苹果公司提供的一个框架,用于管理应用程序数据模型对象的生命周期,它简化了数据持久化过程。在本书的介绍中,作者强调了其采用的方法论,同时在本书的各个章节中都包含了一些示例和实践练习,旨在帮助...

    Core Data:Apple’s API for Persisting Data on Mac OS X

    - 当数据模型发生变化时,Core Data 支持自动迁移旧版本的数据到新版本的数据模型中,确保数据的一致性和完整性。 **4. 多线程支持** - Core Data 支持多线程操作,可以在不同的线程中创建不同的上下文,以便更好...

    Core Data objc中国(最新版已对应Swift4)花钱买的包含pdf,mobi,epub格式

    在本书中,你可以深入了解到Core Data的核心概念和工作流程,包括模型设计、实体关系、属性类型以及数据模型的版本管理。Core Data的模型层允许开发者定义应用程序的数据结构,而不仅仅是简单的表格和字段,它支持...

    Core Data by Tutorials v6.zip

    2. **数据模型设计**:如何使用Xcode的数据模型编辑器创建和管理数据模型,包括版本控制和迁移策略。 3. ** fetch请求**:学习如何编写和执行fetch请求,以查询和过滤数据,理解NSFetchRequest、NSSortDescriptor和...

Global site tag (gtag.js) - Google Analytics