Tag: 核心数据

核心数据子查询谓词

我试图让一个子查询谓词工作,我很挣扎。 我有两个实体。 [联赛] <—- >> [游戏] 游戏有一个属性kickOffDate 。 我想用一个谓词来返回所有至less有一场Game Leagues ,并且今天有一个kickOffDate。 我正在使用这个谓词 // startOfDay and endOfDay are functions to return the given date with 00:00:00 and 23:59:59 respectively NSPredicate *startOfDayPredicate = [NSPredicate predicateWithFormat:@"SUBQUERY(games, $g, $g.kickOffDate >= %@).@count > 0", [self startOfDay:[NSDate date]]]; NSPredicate *endOfDayPredicate = [NSPredicate predicateWithFormat:@"SUBQUERY(games, $g, $g.kickOffDate <= %@).@count > 0", [self endOfDay:[NSDate […]

在启动时预先在Core Data中填入信息。

我必须做一个使用核心数据来存储信息的iOS应用程序。 我创build了模型,以及如何将数据添加到应用程序中,一切工作都很完美,唯一的问题是数据模型是空的,但我想在应用程序启动时自动填充一些数据。 我能怎么做?

使用KVO观察Objective-C中集合内对象的属性更改

我有一个核心数据对象(AGroup)与其他核心数据对象(项目,这是ANItem的实例)的集合对多关系。 我在UITableView中使用AGroup对象(这是在iOS上),项目的显示顺序是由项目属性(sortProperty)决定的。 因此,明智的代码(忽略它们是核心数据对象,所以这是半伪代码),它看起来像这样: @interface AGroup : NSManagedObject { NSSet *items; // these are instances of ANItem } @property (retain) NSSet *items; @end @interface ANItem : NSManagedObject { NSNumber *sortProperty; } @property (retain) NSNumber *sortProperty; @end 好,所以,这里的重点是,UITableView有一个AGroup对象的实例,并显示项目的列表,项目的显示顺序是由sortProperty属性决定的。 所以,我想知道什么时候sortProperty更改在一个ANItem的实例,以便我可以更新表视图。 我想知道,有没有一种方法可以使用KVO观察AGroup对象中的sortProperty? 就像是: [group addObserver:self forKeyPath:@"items.sortProperty" options:(NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld) context:nil]; 甚至: [group addObserver:self forKeyPath:@"items.@sum.sortProperty" options:(NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld) context:nil]; 会起作用,因为价值改变时总和会改变。 我试过这个,但是,我得到一个无效的参数错误。 有谁知道这是可能的吗? 如果是这样,怎么样? 我意识到我可以通过sortProperty做一个获取请求并对请求进行sorting,但由于其他应用程序体系结构的限制,在这种情况下这是不可能的。 […]

UIDocument openWithCompletionHandler:崩溃

我在我的项目中使用核心数据,并在下面的代码部分遇到罕见的崩溃 -(void) useDocument{ AFFormsCoreDataEngine* engine = [AFFormsCoreDataEngine sharedInstance]; if (![[NSFileManager defaultManager] fileExistsAtPath: [engine.formsDatabase.fileURL path]]) { [engine.formsDatabase saveToURL: engine.formsDatabase.fileURL forSaveOperation: UIDocumentSaveForCreating completionHandler: ^(BOOL success){ // setup }]; } else if (engine.formsDatabase.documentState == UIDocumentStateClosed) { [engine.formsDatabase openWithCompletionHandler: ^(BOOL success){ // setup }]; } else if (engine.formsDatabase.documentState == UIDocumentStateNormal) { // setup } } 这是崩溃日志说: Last Exception Backtrace: […]

核心数据映射模型版本哈希与源模型版本哈希不匹配

在启用核心数据迁移debugging的情况下,执行迁移时,如预期的那样,我看到三个实体(2,3,4)具有改变的哈希值。 实体1不改变,用于说明。 存储元数据(源模型): Entity1 = <67852e01 …>; Entity2 = <2b68bba5 …>; Entity3 = <58babd8d …>; Entity4 = <1c694c80 …>; 当前模型(目标模型): Entity1 = <67852e01 …>; Entity2 = <260e4d68 …>; Entity3 = <13360b6f …>; Entity4 = <16513e1b …>; 接下来,我创build了映射模型,但映射模型中的哈希与实际模型中的哈希不同: 映射模型源哈希值: Entity1 = <67852e01 …>; Entity2 = <2b68bba5 …>; Entity3 = <d66bed18 …>; // !!! Entity4 = <2c56997a […]

iOS CoreData与自身的反向关系

我试图build立一个类似于Twitter用户的CoreData模型,当用户可以有许多其他用户跟随他和许多其他用户跟着他。 我附加了我试图使用的模型,但似乎越来越复杂的检索追随者。 处理这种情况的最好方法是什么?

核心数据:,这个方法会反映对象的变化吗?

首先我创build一个带有NSFetchedResultsController的NSFetchRequest ,它获取实体“Entity”的所有对象。 然后插入一个新的NSManagedObject A(它是“Entity”的一个实例)和Edit B(它也是“Entity”的一个实例)。 那么我调用NSArray *result = [fetchedResultsController -fetchedObjects] ,会得到A和B的结果吗? 在整个项目中,我只使用一个 NSManagedObjectContext。 如果我这样做,这在文档中意味着什么? fetchedObjects获取的结果。 @property(nonatomic,只读)NSArray * fetchedObjects讨论如果performFetch:没有被调用,属性的值是nil。 结果数组只包含由获取请求(fetchRequest)指定的实体的实例并且与其谓词相匹配。 (如果获取请求没有谓词,则结果数组包含由获取请求指定的实体的所有实例。) 结果数组反映了控制器托pipe对象上下文中托pipe对象的内存中状态,而不是持久性存储中的状态。 但是,返回的数组不会随着托pipe对象的插入,修改或删除而更新。

Swift CoreData:错误:无法调用NSManagedObject类NSManagedObject上的指定初始值设定项

我正在使用核心数据在vc1中保存类别,并希望将列表属性添加到vc2中的列表中。 我的数据模型是许多列表属性的一个类别。 我在vc1中添加这样的类别: func createNewCategory() { var category: NSManagedObject! = NSEntityDescription.insertNewObjectForEntityForName("Category", inManagedObjectContext: self.context) as NSManagedObject category.setValue(self.categoryTextField.text, forKey: "name") var error: NSError? = nil self.context.save(&error) } 在vc2中设置数据: func setupCoreData() { var appDelegate: AppDelegate = (UIApplication.sharedApplication()).delegate as AppDelegate self.context = appDelegate.managedObjectContext! var request: NSFetchRequest = NSFetchRequest(entityName: "Category") if (self.context.executeFetchRequest(request, error: nil)) { var error: NSError? = nil […]

如何使用核心数据模型而不保存它们?

我正在编写一个应用程序,我正在使用MagicalRecord作为与Core Data交互的框架。 应用程序从服务器获取海报arrays,然后显示它们。 海报也可以在应用上创build,然后上传到服务器,如果用户需要它。 因此,用户创build的海报使用Core Data存储在本地数据库中,而从服务器获取的海报只能在应用程序中显示,而不能在本地保存。 如何使用相同的Poster类(现在是NSManagedObject的子类)来处理这两种情况? 这是我的class级: @interface Poster : NSObject @property (nonatomic, retain) NSNumber * posterID; @property (nonatomic, retain) NSString * artists; @end 当我从服务器获取海报数组时,我分配一个新的海报,然后分配属性: Poster *poster = [[Poster alloc] init]; if ([dict objectForKey:@"id"]) poster.posterID = [dict objectForKey:@"id"]; if ([dict objectForKey:@"artists"]) poster.artists = [dict objectForKey:@"artists"]; 但是,当到达链接poster.posterID = [字典等等等应用程序崩溃这个错误 由于未捕获的exception'NSInvalidArgumentException',原因:' – [海报setPosterID:]:无法识别的select器发送到实例0xaa8b160' 如果我用Poster *poster = […]

iOS – 核心数据集属性主键

我正在Swift中开发一个应用程序,最近开始使用Core Data。 我必须定义我的实体的哪个属性是我的主键。 例如: 我有一个实体具有该类的属性: ID 名称 年龄 我需要“id”属性是我的主键。 在Objective-C中可能是一样的,只需要知道如何定义它。