Tag: 核心数据

如何使用App Storetesting核心数据迁移?

我们有一个应用程序,目前在应用程序商店。 它使用核心数据作为其持久性机制。 我们准备好了一个新的版本,它有一些模式的变化。 具体而言,我们添加了1个新实体,并为现有实体添加了新的属性。 从我的理解和阅读来看,这是可能发生的最简单的迁移之一。 没有字段删除,没有关系改变。 数据模型由5个实体组成,根本没有关系。 我们对数据模型进行了版本化,并创build了一个.xcmappingmodel来处理迁移。 我们通过添加以下选项来创buildPersistentStoreCoordinator来处理迁移: NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, nil]; 目前,我们已经使用以下过程成功地与团队的几名成员进行了testing: 从设备和iTunes中删除应用程序的所有testing版本 转到app store并下载当前版本 对将certificate迁移成功的应用进行一些更改 将新的二进制文件(使用相同的包标识符签名)拖到iTunes中并进行同步 在设备上加载新版本,validation在以前版本中所做的更改仍然存在,并且应用程序不会崩溃 我的问题是:是否有一个更容易/更好的方法来testing这个? 我们担心的是,一旦应用程序走出门外,没有其他方法可以确保我们的用户有最好的体验。

如何更新已经保存在Swift中的CoreData条目?

我不确定我在这里做错了什么,但是当我第一次保存到coredata时,它工作得很好。 当我试图覆盖,它不。 func testStuff() { var token = loadLoginData() println("Token \(token)") saveLoginData("New Token") var newToken = loadLoginData() println("Token \(newToken)") } func saveLoginData(accessToken: String) { var appDel: AppDelegate = (UIApplication.sharedApplication().delegate as AppDelegate) var context: NSManagedObjectContext = appDel.managedObjectContext! // save data to core data var loginData = NSEntityDescription.insertNewObjectForEntityForName("LoginData", inManagedObjectContext: context) as NSManagedObject loginData.setValue(accessToken, forKey: "accessToken") context.save(nil) println("Done […]

如何在NSDate中使用NSPredicate进行分组 – 需要创build多个UITableView部分

也可以看看 核心数据按date分类FetchedResultsController 有没有办法按date从CoreData实体中分组对象,并使用它们在UITableView控件上创build多个部分? 实质上,我需要一些等同于下面的伪SQL,其中my_group_criteria()将所有testing按天分组: SELECT * FROM tests GROUP BY my_group_criteria(date) 作为一个例子,查询将下列行分成3个独立的部分: [test1 | 2013-03-18 15.30.22] [test2 | 2013-03-18 14.30.22] [test3 | 2013-03-18 13.30.22] [test4 | 2013-03-17 18.30.22] [test5 | 2013-03-17 19.30.22] [test6 | 2013-03-15 20.30.22] 正如已经在2中所回答的那样,NSPredicate不是用于分组实体,所以这可能不是要走的路。 鉴于此,我如何根据一些类似于SQL GROUP BY的标准在UITableView中创build多个部分? 我想避免直接访问SQL-lite数据库,如果可能的话。 相关问题1: NSPredicate:按NSDate属性过滤对象 相关问题2: NSPredicate类似于SQL的GROUP BY

目标C:对象释放,而关键值观察者仍然在其上注册

在将2个附加字段添加到我的核心数据模型后,我遇到了下面的错误。 CarPark_CarPark_ was deallocated while key value observers were still registered with it. Observation info was leaked, and may even become mistakenly attached to some other object. Set a breakpoint on NSKVODeallocateBreak to stop here in the debugger. Here's the current observation info: <NSKeyValueObservationInfo 0x1b6510> ( <NSKeyValueObservance 0x19b210: Observer: 0x1a8cf0, Key path: coordinate, Options: <New: […]

多个NSPersistentStoreCoordinator实例是否可以连接到相同的底层SQLite持久存储?

我读过的关于在multithreading上使用Core Data的一切都谈到了使用多个共享一个NSPersistentStoreCoordinator NSManagedObjectContext实例。 这是理解的,我已经使它在一个应用程序中使用核心数据的主线程支持用户界面,并有一个后台获取操作,可能需要一段时间才能运行。 问题在于底层SQLite持久性存储的访问是由NSPersistentStoreCoordinator序列化的,所以仍然有后台抓取操作阻止UI的情况。 后台获取操作永远不会更新数据,只能从中读取数据。 我可以在连接到相同底层SQLite持久性存储的后台线程上设置完全并行的Core Data堆栈( NSManagedObjectContext , NSManagedPersistentStoreCoordinator和NSManagedObjectModel )吗? 看起来这会给UI线程和后台获取操作之间的完全并发。

在Core Data中将多对多关系迁移到连接表

我有一个iPhone应用程序,使用多对多的关系将标签和笔记链接在一起。 我目前正在使用核心数据的“关系”function来实现这一点,但想迁移到使用连接表。 这是我的挑战:我想从旧模型迁移到连接表模型,我需要弄清楚如何执行数据迁移。 有没有什么好的例子,如何做到这一点? 更新:我在这里澄清我的问题,以帮助这里发生了什么:我想尝试使用Simperium来支持我们的应用程序,但Simperium不支持多对多的关系(!)。 作为我想要做的一个例子,我们以iPhoneCoreDataRecipes应用程序为例。 这是我的核心数据scheme目前类似: …这是我正在过渡到: 我如何从一个到另一个,并与我的数据? 核心数据迁移的苹果文档是非常稀疏的,我没有看到使用NSEntityMapping或NSMigrationManager子类来完成工作的任何有用的演练。

如何将其他内容保存到我的UIManagedDocument文件包中?

我在解密UIManagedDocument Apple文档时遇到了很多麻烦,特别是以下方法: – (id)additionalContentForURL:(NSURL *)absoluteURL error:(NSError **)error – (BOOL)readAdditionalContentFromURL:(NSURL *)absoluteURL error:(NSError **)error – (BOOL)writeAdditionalContent:(id)content toURL:(NSURL *)absoluteURL originalContentsURL:(NSURL *)absoluteOriginalContentsURL error:(NSError **)error 是否有人成功地将额外的内容保存到UIManagedDocument包内的“添加内容”目录中? 我正在考虑使用UUID作为文件名(具有正确的文件扩展名),将直接的图像(PNG,JPEG等)和video(m4v等)保存到此目录中,并将对这些单独文件的引用作为NSString文件path我的持久性商店。

从string到整数的核心数据迁移16

我无法将商店实体属性从string迁移到整数16.下面是我采取的步骤: 添加模型版本… 在新模型中,将实体属性从string更改为Int 16。 在File Inspector> Versioned Core Data Model> Current Model中select新模型 为旧模型和新模型创build一个映射模型。 跑 这是错误: 未解决的错误错误域= NSCocoaErrorDomain代码= 134140“操作无法完成。(Cocoa错误134140.)”UserInfo = 0xbd5cd20 {原因=无法find或自动推断映射模型迁移,destinationModel = … 映射模型在编译的.app文件中: 并在项目中: 迁移适用于像Integer 16> Integer 32这样的属性,或者在更改属性名称时使用。 我试图创build一个简单的核心数据项目和迁移工作自动(有和没有映射模型)从string到整数16和回。 最奇怪的部分是我试图寻找在程序包中的所有映射模型,没有find当前的源/目标模型。

performBlock:和performBlockAndWait之间的行为差​​异:?

我在私人队列中创buildNSManagedObjectContext来处理从文件和/或服务中获取的数据更新: NSManagedObjectContext *privateContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType]; AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]; privateContext.persistentStoreCoordinator = appDelegate.persistentStoreCoordinator; 由于我使用的是私有队列,我并不完全理解performBlock:和performBlockAndWait: methods之间的区别…为了执行我的数据更新,我正在执行此操作: [privateContext performBlock: ^{ // Parse files and/or call services and parse // their responses // Save context [privateContext save:nil]; dispatch_async(dispatch_get_main_queue(), ^{ // Notify update to user }); }]; 在这种情况下,我的数据更新是同步的和顺序的,所以我想这是保存上下文的正确位置,对吧? 如果我做错了,我会很感激,如果你让我知道。 另一方面,这个代码是否等同? [privateContext performBlockAndWait: ^{ // Parse files […]

iOS CoreData NSPredicate一次查询多个属性

我想使用UISearchBar查询NSManagedObject多个属性我有一个名为Person的NSManagedObject ,每个人都有一个name和socialSecurity属性。 现在我的代码可以对这些属性或其他属性执行search(提取),但不能同时执行这两个属性。 – (void) performFetch { [NSFetchedResultsController deleteCacheWithName:@"Master"]; // Init a fetch request NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; NSEntityDescription *entity = [NSEntityDescription entityForName:@"MainObject" inManagedObjectContext:self.managedObjectContext]; [fetchRequest setEntity:entity]; // Apply an ascending sort for the color items //NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"Term" ascending:YES selector:nil]; NSSortDescriptor *sortDescriptor; sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"fullName" ascending:YES selector:@selector(caseInsensitiveCompare:)]; NSArray […]