Tag: 核心数据

RestKit – fetchFromDataStore(caching)问题

我正在查看RestKit框架以及它如何工作。 然后我创build一个简单的项目,将调用Github api,并将数据加载到一个tableview中 – 在我读过一些教程后 – 关于从远程加载和映射它工作正常,并加载到tableview,但是当我试图从数据存储 – 离线模式 – 应用程序将崩溃,这是日志: 2012-07-29 16:21:41.611 RKGithubClient_FromZtoH[29181:c07] I restkit:RKLog.m:33 RestKit initialized… 2012-07-29 16:21:53.161 RKGithubClient_FromZtoH[29181:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'executeFetchRequest:error: A fetch request must have an entity.' *** First throw call stack: (0x20b9022 0x197acd6 0xf15871 0x643c 0x42e5 0x3e14 0x4697 0x53838f 0x5385eb 0x5394ed 0x4a6a0c 0x4abf92 […]

NSManagedObject在Swift中实现协议的EXC_BAD_ACCESS错误

我有以下两种方法: func isAuthenticated() -> Bool { var currentUser: CurrentUser? = self.getCurrentUser() if currentUser == nil { return false } self.token = getUserToken(currentUser!.username) if self.token == nil { return false } if !tokenIsValidForUser(self.token!, user: currentUser!) { return false } return true } func tokenIsValidForUser(token: AuthenticationToken, user: UserObject) -> Bool { if token.username != user.username { return […]

核心数据问题 – 检查项目是否存在

我正在处理从NSScreenCast处理导入到核心数据应用程序的代码示例。 (https://github.com/subdigital/nsscreencast/tree/master/012-core-data-importing-data/BeerBrowser)。 我有大部分工作的例子。 我能够推动刷新button,它parsingJSON并将其导入到数据库中。 但是,每次按下刷新button,都会重新添加相同的数据。 我已经追溯到下面的代码。 + (Brewery *)breweryWithServerId:(NSInteger)serverId usingManagedObjectContext:(NSManagedObjectContext *)moc { NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:[Brewery entityName]]; [fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"serverId = %d", serverId]]; [fetchRequest setFetchLimit:1]; NSError *error = nil; NSArray *results = [moc executeFetchRequest:fetchRequest error:&error]; NSLog(@"results: %@", results); if (error) { NSLog(@"ERROR: %@ %@", [error localizedDescription], [error userInfo]); exit(1); } if ([results count] == […]

RestKit postObject方法中的post对象和它返回的RKMappingResult之间有什么关系?

我一直在浏览RestKit的文档,但是我还没有能够解决RKMappingResult一些细节问题。 我有创buildNSManagedObject ,称为newUser ,并插入mainQueueManagedObjectContext的mainQueueManagedObjectContext的代码。 然后使用我的对象pipe理器的postObject:path:parameters:success:failure:方法将用户发布到服务器。 这似乎工作正常。 当发布请求完成时,我需要更新newUser托pipe对象上的一些字段,这些字段不会根据发布请求的结果进行映射。 传递到块中的mappingResult参数似乎具有与从服务器的响应中设置的所有字段正确映射的托pipe对象。 显然, mappingResult中的对象与我发布的对象不是同一个对象,因为它们不在同一个线程中。 如果我在发布之前保存新newUser ,请求完成后它们的objectID是否相同,并返回映射结果? 我在想象,新newUser和映射结果中的对象都指向存储在CoreData中的同一个对象,是正确的吗? 我问的原因是,这似乎并非如此。 如果我发出一个发布请求并同时保存新的newUser对象和映射结果中返回的对象,我最终在Core Data中有两个不同的对象,一个用于newUser ,一个用于映射结果。 我通过更改newUser对象和newUser对象上的字段,并确认它们都是独立更改来确认这一点。 此外,我下次获取时,获取两个用户对象。 我如何防止这种情况? 如果这是正确的,如果我崩溃会发生什么,请求还没有完成? CoreData中不会有一个存根对象吗? 如果请求失败,如何删除我创build的存根对象? 我可以在失败区域做类似以下的事情吗? dispatch_async(dispatch_get_main_queue(), ^{ [newUser.managedObjectContext deleteObject:newRegisteredUser]; }); 新用户在哪里,是我在mainQueue上创build的托pipe对象。 最后,如果我通过映射结果在后台线程中取回托pipe对象,则无法将返回的用户设置为UI用于从主线程获取信息的用户,那么如何通知用户界面改变它的用户? 我应该发布一个通知,告诉用户界面从Core Data重新获取活动用户吗? 更新关于重复的对象 我做了一些进一步的testing,我肯定会得到一个重复的对象,当职位返回。 我首先创build一个新的newUser并设置属性: HNGRRegisteredUser *newUser = [NSEntityDescription insertNewObjectForEntityForName:@"RegisteredUser" inManagedObjectContext:context]; newUser.firstName = @"John" newUser.lastName = @"Smith" newUser.gender = @"Male" newUser.email = @"js@email.com" newUser.hungrosityModel […]

NSManagedObjectContext executeFetchRequest返回不稳定的对象,导致EXC_BAD_ACCESS,SIGABRT等

我的猜测是我在这里错过了一些核心数据的基本理解,但在这里: 我在我的应用程序中有几个提取请求来处理不同事情的检索。 在某些情况下,代码运行正常,返回请求的对象。 在某些情况下,它会返回看起来已经被释放的对象(例如,稍后尝试引用返回的结果给出EXC_BAD_ACCESS)的几行代码。 当我在代码中设置各种断点和日志语句并逐步完成时,还会在代码中的其他位置获得偶然的SIGABRT或EXC_BAD_ACCESS。 在任何情况下,似乎是在我参考提取请求的结果时。 下面是一个这样的获取请求的示例: // Who am I? NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; NSString *signedInPersonId = [defaults stringForKey:@"signedInPersonId"]; // Return (if any) the Request object with given UUID RequestStrings *r = [[RequestStrings alloc] init]; NSEntityDescription *description = [NSEntityDescription entityForName:r.table_Request inManagedObjectContext:moc]; NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(UUID == %@) && (dataOwnerId == %@)", UUID, […]

核心数据<故障>使用一次后

我search了几个小时,但没有find任何东西 我在核心数据有线情况 方法来获取对象 func fetchAllCoreData() -> NSArray? { let moc = DataController().managedObjectContext let fetchReq = NSFetchRequest(entityName: "Theater") var array = [Theater]() fetchReq.returnsObjectsAsFaults = false do { let obj = try moc.executeFetchRequest(fetchReq) as! [Theater] for var details in obj { array.append(details) } } catch { print("Error in Fetching") return nil } return array } DataController()来自http://www.codebeaulieu.com/10/adding-core-data-using-swift-2 我从获取值是 […]

我的xcmappingmodel中的自定义策略将不会被执行

我试图为我的应用程序创build一个具有一些自定义代码的映射模型。 因此,我创build了一个xcmappingmodel,并将NSEntityMigrationPolicy分类并实现了 createDestinationInstancesForSourceInstance 方法。 此外,我在我的映射模型的“自定义策略”字段中input了类名。 不幸的是,我的代码将永远不会被调用(尝试断点和日志)。 我的商店是使用以下选项创build的: NSMigratePersistentStoresAutomaticallyOption: YES NSInferMappingModelAutomaticallyOption: YES 我正在使用XCode 4.0.2(也用XCode 4.2进行testing)。 所有其他的“轻量级”迁移运行平稳。 我需要做什么才能使我的自定义迁移运行?

如何将iMessage扩展的sqlite存储文件下载到MacBook

我们正在开发一个iMessage扩展。 它成功地使用了Core Data。 我们需要评估store.sqlite文件,但是找不到它。 我们试图find这样的: 在Xcode:窗口 – >设备 在Installed Apps ,select我们的扩展 Download Container … 但是容器是空的: 更新: 感谢@ Mundi的回答,我们发现了如何获取模型URL: file:///var/mobile/Containers/Data/PluginKitPlugin/9C15B67C-8917-4A24-9FB0-BD119C43B3C4/Library/Application%20Support/Model.sqlite 现在我们试图将模型复制到Documents文件夹,以便能够通过Xcode将其下载到我们的MacBook(请参阅上文)。 不幸的是,“文件: NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] 再次在/var/mobile/Containers/ : file:///var/mobile/Containers/Data/PluginKitPlugin/D0BBD375-A8B7-43DD-8486-1909965CAEB0/Documents 我们如何将Model.sqlite文件从共享容器下载到我们的MacBook?

核心数据轻量级迁移在应用程序更新后崩溃

两天前我发布了应用程序。 根据AppStore的反馈和itunesconnect发布的崩溃报告,发布中有很多崩溃。 但是,不是100%的用户受到了影响,也许只有30%。 我读过崩溃日志,看到一个问题。 它正在数据库迁移过程中崩溃。 我使用轻量级数据库迁移。 通常我会非常仔细地添加新的datamodel版本。 即使在每个发行版之前,我都安装了以前版本的应用程序,使用它一段时间,然后才安装最新版本。 那么这次呢。 我浏览了两个数据模型(之前和现在)。 添加: 1)新实体(轻量级迁移是可以的) 2)现有实体内的新字段。 他们都是可选的。 (确定轻量级迁移) 3)我做了可选的AND索引的现有实体中的一个新领域。 (好?) 没有现有的字段和实体被重命名。 我做错了什么? 堆栈跟踪: Thread 0 name: Dispatch queue: com.apple.main-thread Thread 0: 0 libsystem_kernel.dylib 0x352f439c pread + 20 1 libsqlite3.dylib 0x30d2d632 unixRead 2 libsqlite3.dylib 0x30d4221a readDbPage 3 libsqlite3.dylib 0x30d41156 sqlite3PagerAcquire 4 libsqlite3.dylib 0x30d583be moveToChild 5 libsqlite3.dylib 0x30d8e0e8 moveToLeftmost 6 […]

Core应用程序中的核心数据和文本文件

我正在创build一个由几个UITableViewControllers组成的简单的iOS应用程序。 显示在视图控制器中的信息将来自一个文本文件(我将包含在项目的资源中)。 文本文件的内容将来自电子表格。 由于这是我第一次使用Core Data,我有几个问题: 什么格式是最常见的文本文件? CSV,XML或其他东西? 什么是导入数据最简单的方法? 一些注意事项: 数据是静态的。 理想情况下,应用程序只会将数据加载到“核心数据”(第一次运行应用程序)。 每次额外的应用程序运行将只是从一些核心数据源(我还不完全熟悉),而不是从文本文件重新加载它的数据。