Questions tagged «core-data»

Core Data是Apple的对象建模和持久性框架,适用于iOS,iPadOS,tvOS,watchOS和macOS。Xcode提供了一个对象模型编辑器,用于指定实体,属性和关系。

20
Sqlite文件位置核心数据
通常,核心数据应用的sqlite存储文件位于 库>应用程序支持> iPhone Simulator> 7.1(或您使用的任何版本)>应用程序>(哪个文件夹包含您的应用程序)>文档 文件夹,但在IOS 8中找不到。我假设他们只是在iPhone Simulator文件夹中添加了一个8.0文件夹,但它不存在。有人能够找到它吗?

6
如何将数组保存到CoreData?
我需要将阵列保存到Core Data。 let array = [8, 17.7, 18, 21, 0, 0, 34] 该数组中的值以及值的数量是可变的。 1.我在NSManagedObject类中声明什么? class PBOStatistics: NSManagedObject, Equatable { @NSManaged var date: NSDate @NSManaged var average: NSNumber @NSManaged var historicAverage: NSNumber @NSManaged var total: NSNumber @NSManaged var historicTotal: NSNumber @NSManaged var ordersCount: NSNumber @NSManaged var historicOrdersCount: NSNumber @NSManaged var values: …

6
如何在Core Data中编写BOOL谓词?
我有一个type属性,BOOL我想搜索该属性为的所有托管对象YES。 对于字符串属性,它很简单。我创建这样的谓词: NSPredicate *predicate = [NSPredicate predicateWithFormat:@"userName = %@", userName]; 但我怎么做到这一点,如果我有一个叫布尔属性选择,我想为这个断言?我可以做这样的事情吗? NSPredicate *predicate = [NSPredicate predicateWithFormat:@"selected = %@", yesNumber]; 还是我需要其他格式说明符并通过YES?

8
如何处理临时NSManagedObject实例?
我需要创建NSManagedObject实例,对其进行处理,然后将其丢弃或存储到sqlite db。问题是,我无法创建NSManagedObject未连接到的实例,NSManagedObjectContext这意味着在我决定不需要数据库中的某些对象之后,必须以某种方式进行清理。 为了解决这个问题,我使用相同的协调器创建了一个内存中的存储,并通过使用assignObject:toPersistentStore.Now来将临时对象放置在其中,如何确保这些临时对象不会到达数据,该数据是我从两家商店的共同点是什么?还是我必须为此任务创建单独的上下文? UPD: 现在,我正在考虑为内存存储创建单独的上下文。如何将对象从一个上下文移动到另一个上下文?仅使用[context insertObject:]?在这种设置下可以正常工作吗?如果我从对象图中插入一个对象,那么整个图是否也会插入到上下文中?

3
通过多次传递进行核心数据迁移的示例或说明?
我的iPhone应用程序需要迁移其核心数据存储,并且某些数据库非常大。苹果的文档建议使用“多次通过”来迁移数据以减少内存使用。但是,文档非常有限,并且不能很好地说明如何实际执行此操作。有人可以给我指出一个好的例子,还是详细说明如何真正实现这一目标的过程?

4
如何异步同步CoreData和REST Web服务并同时正确地将所有REST错误传播到UI中
嘿,我正在这里为我们的应用程序设计模型层。 一些要求是这样的: 它应该可以在iPhone OS 3.0+上运行。 我们的数据源是一个RESTful Rails应用程序。 我们应该使用Core Data在本地缓存数据。 客户端代码(我们的UI控制器)应尽可能少地了解任何网络内容,并应使用Core Data API查询/更新模型。 我已经检查了有关构建服务器驱动的用户体验的WWDC10会议117,并花了一些时间检查了Objective Resource,Core Resource和RestfulCoreData框架。 Objective Resource框架不会自己与Core Data对话,而仅仅是REST客户端实现。Core Resource和RestfulCoreData都假定您在代码中与Core Data进行了对话,并且它们解决了模型层背景中的所有细节。 到目前为止,一切看起来还不错,尽管我最初虽然Core Resource或RestfulCoreData都可以满足上述所有要求,但是...有几件事似乎似乎都无法正确解决: 将本地更新保存到服务器时,不应阻止主线程。 如果保存操作失败,则错误应传播到UI,并且不应将任何更改保存到本地Core Data存储。 当您调用- (BOOL)save:(NSError **)error托管对象上下文时,核心资源恰巧将所有请求发送给服务器,因此能够以某种方式向服务器提供基础请求的正确NSError实例失败。但是它将阻塞调用线程,直到保存操作完成。失败。 RestfulCoreData使您的-save:调用保持完整,并且不会为客户端线程引入任何额外的等待时间。它仅注意NSManagedObjectContextDidSaveNotification,然后在通知处理程序中向服务器发出相应的请求。但这种方式的-save:呼叫总是成功完成(当然,考虑到核心数据是好的,与保存的更改)和客户端的代码,居然叫它没有办法知道节省,可能也没有传播到因为一些服务器404或421或任何发生服务器端错误。甚至更多,本地存储变得可以更新数据,但是服务器永远不知道这些更改。失败。 因此,我正在寻找解决所有这些问题的可能的解决方案/通用做法: -save:在网络请求发生时,我不希望调用线程在每次调用时都阻塞。 我想以某种方式在用户界面中收到一些同步操作出错的通知。 如果服务器请求失败,我也希望实际的核心数据保存失败。 有任何想法吗?

5
iPhone核心数据“生产”错误处理
我已经在Apple参考提供的示例代码中看到了有关如何处理Core Data错误的信息。即: NSError *error = nil; if (![context save:&error]) { /* Replace this implementation with code to handle the error appropriately. abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. If …

7
核心数据主键
这似乎很愚蠢,但我仍然不知道如何在xcdatamodel文件中将属性标记为主键。我的永久存储是sqlite文件。谁能帮我? 在这种情况下,如何“验证”一个唯一的ID?我应该写一个验证方法之类的吗?

1
CoreData + iCloud +级联删除-如何处理?
CoreDataCoreData使用级联删除规则,实体“ A”与条目“ B”的集合具有一对多关系。 在iCloud环境中,虽然设备1显示了“ B”条目之一的详细视图,但设备2删除了“ A”条目。 NSPersistentStoreDidImportUbiquitousContentChangesNotification在设备1中接收到通知时,其App委托将进行调用mergeChangesFromContextDidSaveNotification,然后广播一个内部通知,该内部通知将由视图控制器捕获,其中显示条目“ B”的详细信息(代码performBlock在应使用的位置使用)。 但是,尽管当详细视图控制器接收到内部通知时,条目“ A”的确为空,但是条目“ B”仍然作为有效CoreData对象存在。级联规则似乎尚未完成其操作。因此,设备1中的视图控制器不知道删除操作,这可能导致意外结果。 mergeChangesFromContextDidSaveNotification 基本数据已合并但Cascade规则尚未完成时,似乎会过早返回。 我试图在通知到达时刷新条目“ B”,同时stalenessInterval将托管对象上下文的临时设置为零,这样就不会使用缓存的对象,但是我仍然从存储中获得有效的条目“ B”。 null此时不选择检查条目“ A”,因为情况比我在此描述的要复杂得多,在某些情况下,空条目“ A”可能是有效的。 我试图在合并更改之后并在将内部通知发送给视图控制器之前引入延迟。我发现2秒钟的延迟无济于事,但10秒钟的延迟有效。 但我不想依靠这种延迟。这是一个没有大量数据的测试环境,我不知道在生产环境中会发生什么。依靠实验性的延迟似乎不是正确的事情。 有没有对的事?还是我开始做错了什么?

3
核心数据背景上下文最佳实践
我有一个大型导入任务,我需要处理核心数据。 假设我的核心数据模型如下所示: Car ---- identifier type 我从服务器上获取汽车信息JSON的列表,然后将其与核心数据Car对象同步,这意味着: 如果是新车->Car从新信息创建新的核心数据对象。 如果汽车已经存在->更新核心数据Car对象。 因此,我想在后台执行此导入操作而不阻塞UI,并且在用户滚动显示所有汽车的cars表视图时使用。 目前我正在做这样的事情: // create background context NSManagedObjectContext *bgContext = [[NSManagedObjectContext alloc]initWithConcurrencyType:NSPrivateQueueConcurrencyType]; [bgContext setParentContext:self.mainContext]; [bgContext performBlock:^{ NSArray *newCarsInfo = [self fetchNewCarInfoFromServer]; // import the new data to Core Data... // I'm trying to do an efficient import here, // with few fetches …

5
核心数据-无法在路径上加载优化的模型
在带有iOS 9 beta 5的iPhone 6中从Xcode 6运行我的应用程序时,我在控制台中获得了一些打印件: CoreData:无法在路径'/var/mobile/Containers/Bundle/Application/0000000B-BDBC-0000-000B-0000FB00000B/Distribution.app/database.momd/database.omo'上加载优化模型 我找不到与此相关的内容,有人对此消息有任何线索吗?

7
如何在核心数据中存储图像
我是iOS新手。我一直在尝试制作一个应用程序,它将将从相机捕获的图像存储到中CoreData。我现在知道如何存储NSStrings之类的数据,NSDate以及其他类型的数据,但是很难存储图像。我读过很多文章,说您必须将其写入磁盘并写入文件,但是我似乎无法理解。 以下代码是我用来将其他数据存储到核心数据的代码。 - (IBAction)submitReportButton:(id)sender { UrbanRangerAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]; managedObjectContext = [appDelegate managedObjectContext]; NSEntityDescription *entity = [NSEntityDescription entityForName:@"PotholesDB" inManagedObjectContext:appDelegate.managedObjectContext]; NSManagedObject *newPothole = [[NSManagedObject alloc]initWithEntity:entity insertIntoManagedObjectContext:managedObjectContext]; [newPothole setValue:self.relevantBody.text forKey:@"relevantBody"]; [newPothole setValue:self.subjectReport.text forKey:@"subjectReport"]; [newPothole setValue:self.detailReport.text forKey:@"detailReport"]; // [newPothole setValue:self.imageView forKey:@"photo"]; NSDate *now = [NSDate date]; //NSLog(@"now : %@", now); NSString …

2
我应该使用Core Data中的什么NSNumber(整数16、32、64)保留NSUInteger
我想将NSUInteger保留在我的核心数据中,但我不知道应该使用哪种类型(整数16、32、64)来适应所需的空间。 据我了解: Integer 16 can have minimum value of -32,768 to 32,767 Integer 32 can have minimum value of -2,147,483,648 to 2,147,483,647 Integer 64 can have minimum value of -very large to very large 并且NSUInteger是无符号long的def类型,它等于unsigned int(iPhone上的Objective-c中的类型) 因此,如果我将我的NSUInteger转换为具有numberWithUnsignedInteger:的NSNumber并将其另存为NSNumber(Integer 32),我可以安全地取回数据了吗?

8
'+ entityForName:nil不是合法的NSManagedObjectContext参数-核心数据
我已将所有相关代码添加到App Delegate中,并且能够添加到数据模型并从applicationDidFinishLaunchingWithOptions中的数据模型中获取。 当我尝试在View Controller中写入数据模型时,出现了我的问题。我已将此代码添加到头文件中: NSFetchedResultsController *fetchedResultsController; NSManagedObjectContext *managedObjectContext; @property (nonatomic, retain) NSFetchedResultsController *fetchedResultsController; @property (nonatomic, retain) NSManagedObjectContext *managedObjectContext; 并将此代码添加到我的实现文件中: NSManagedObjectContext *context = [self managedObjectContext]; NSManagedObject *model = [NSEntityDescription insertNewObjectForEntityForName:@"Events" inManagedObjectContext:context]; [model setValue:@"Sample Event" forKey:@"eventName"]; NSError *error; if (![context save:&error]) { NSLog(@"Couldn't save: %@", [error localizedDescription]); } 但是,出现以下错误: 'NSInvalidArgumentException', reason: '+entityForName: …

7
NSFetchedResultsController,其部分由字符串的第一个字母创建
在iPhone上学习核心数据。关于核心数据,用部分填充表格视图的例子似乎很少。该CoreDataBooks示例使用节,但他们是从模型中的满弦产生。我想按姓氏的第一个字母(例如“地址簿”)将“核心数据”表分为几部分。 我可以为每个人创建另一个属性(即一个字母),以充当部门的划分,但这似乎很繁琐。 这就是我要开始的东西...这个把戏似乎在欺骗sectionNameKeyPath: - (NSFetchedResultsController *)fetchedResultsController { //.........SOME STUFF DELETED // Edit the sort key as appropriate. NSSortDescriptor *orderDescriptor = [[NSSortDescriptor alloc] initWithKey:@"personName" ascending:YES]; NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:orderDescriptor, nil]; [fetchRequest setSortDescriptors:sortDescriptors]; // Edit the section name key path and cache name if appropriate. // nil for section name …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.