Tag: 核心数据

一对多关系:CoreData

我对coredata相当陌生,一直困在一个问题上。 任何援助将不胜感激。 信息:我有一个核心数据应用程序与实体; 列表和任务。 列表和任务有一个一对多的关系。 Task.h @class List; @interface Task : NSManagedObject @property (nonatomic, retain) NSString * task; @property (nonatomic, retain) NSString * note; @property (nonatomic, retain) List *list; @end List.h @class Task; @interface List : NSManagedObject @property (nonatomic, retain) NSString * name; @property (nonatomic, retain) NSDate * dateCreated; @property (nonatomic, retain) NSNumber * sortOrder; […]

iOS,核心数据,更新数据模型 – 它是如何工作的?

文件前言 假设,我有一个iOS应用程序,它是一个图书阅读器,它使用Core Data来存储图书数据。 我的应用程序的第一个版本使用一个相当简单的数据模型,我以后会更新。 我想通过“In App Purchase”出售我的书籍。 题 如果我使用新的数据模型更新应用程序, iOS应用程序是否将负责将旧书籍转换为新版本的数据模型? 说, iPhone或iPad将不得不转换它们? 我将如何激励用户在新版本中购买图书(在我的应用程序中)时将其应用程序更新为新版本,同时还保留旧版本的应用程序?

将NSManagedObject的关系更改为不同的上下文

这是以前的问题的后续行动: 核心数据:以编程方式更改删除规则 。 我想重述一下我的问题,并在这里做到这一点。 简而言之,我的应用程序允许从第三方数据库更新条目,但我想保留用户注释。 所以我的工作stream程是: 遍历所有实体 下载外部XML并parsing成一个新的实体 如果用户注释,则将其关系从旧实体更改为新实体 删除旧的实体 在导入过程中,旧实体位于主要上下文中,新实体位于临时导入上下文中。 3号给我的问题,如果我只是改变关系,然后他们不显示,如果我更新我的用户界面。 如果我使用objectID来获取注释,然后更改关系,如下所示: NSManagedObjectID *objectId = oldAnnotation.objectID; Annotation *newAnnotation = [importContext objectWithID: objectId]; [newEntry addAnnotationObject: newAnnotation]; 它还没有工作 – 它没有显示出来。 编辑:如果我将第二行中的上下文更改为newEntry.managedObjectContext ,我得到一个Illegal attempt to establish a relationship 'foo' between objects in different contexts错误Illegal attempt to establish a relationship 'foo' between objects in different contexts 。 我错过了什么? […]

CoreData谓词ANY +与对多关系

我在我的模型中定义了这些实体: [Sample] – results (to many relation with [Result]) [Parameter] – results (to many relation with [Result]) – compliant (number value) [Result] – parameter (relation with [Parameter]) – sample (relation with [Sample]) 对于[Sample]对象“MySample”,我需要获取所有具有以下内容的[Parameter]对象: [Result].compliant = 1 AND [Result].sample = MySample 所以,我试图使用谓词来获取[Parameter]对象,谓词将是这些谓词的总和: // returns all parameters that have a result compliant value equal to 1: ANY […]

当从Child ManagedObjectContext和Parent ManagedObjectContext保存时,CoreDataTableView不更新

我试图从一个JSON文件中填充数千个条目的CoreData。 我想要做的是创build一个新的NSManagedObjectContext的父属性设置为我的主NSManagedObjectContext。 每隔一段时间我都会保存在我的子上下文中,如果成功,则保存在我的主要上下文中。 如果这也是成功的,我尝试重新加载我的tableview。 我的CoreDataTableView设置了一个NSFetchedResultController,直接从苹果的文档。 但是,表视图不刷新。 有没有人有什么build议? #pragma mark – Setters – (void)setManagedObjectContext:(NSManagedObjectContext *)managedObjectContext { _managedObjectContext = managedObjectContext; if (managedObjectContext) { NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Place"]; request.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"location" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)]]; request.predicate = nil; //Fetch all Tags self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:managedObjectContext sectionNameKeyPath:@"group" cacheName:nil]; } } #pragma mark – View Lifecycle – (void)viewWillAppear:(BOOL)animated […]

在TableView上添加一个SearchBar

我想在我的tableview中添加一个search栏,里面填充了来自Core Data的数据。 下面是我的TableViewController的代码的一部分。 在tableview中放置一个后,如何开始执行search栏function? let managedObjectContext = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext var fetchedLastName = [String]() var fetchedFirstName = [String]() var fetchedImage = [UIImage]() override func viewDidLoad() { super.viewDidLoad() NSNotificationCenter.defaultCenter().addObserver(self, selector: "reloadData:",name:"load", object: nil) let entityDescription = NSEntityDescription.entityForName("Faculty", inManagedObjectContext: managedObjectContext) let request = NSFetchRequest() request.entity = entityDescription do{ let objects = try managedObjectContext.executeFetchRequest(request) let results = objects […]

如何从数据库中获取一系列项目

在我的SQLite表中,如何获取项目7 000到7 999,大约有100 000个项目? 正常的读取返回到很多的工作,我宁愿一点一点地取它: NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; NSEntityDescription *entity = [NSEntityDescription entityForName:@"Log" inManagedObjectContext:context]; [fetchRequest setEntity:entity]; NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:&err]; // here fetchedObjects holds around 100 000 rows 有没有办法用executeFetchRequest:fetchRequest指定一个范围executeFetchRequest:fetchRequest ? 我必须使用SQLite API吗? 这是个好主意吗?

核心数据上的浮点问题

下面的代码很大程度上受到我在网上find的一些例子的启发,似乎在xcdatamodel中工作正常,核心数据实体名为“Contact”,而名为“address”的属性具有属性String。 它保存我的数据没有问题。 现在我的问题是:我该如何修改这个代码? 为了使它在xcdatamodel中将属性“地址”从string更改为浮点后的工作。 CoreDataTestOneAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]; NSManagedObjectContext *context = [appDelegate managedObjectContext]; NSManagedObject *newContact; newContact = [NSEntityDescription insertNewObjectForEntityForName:@"Contacts" inManagedObjectContext:context]; [newContact setValue:address_InputField.text forKey:@"address"]; NSError *error; [context save:&error];

Restkit编辑插入coredata

我使用restkit消费一个Web服务,但是当我得到的数据我想添加一些其他的参数,我搜查,我发现我应该实现函数调用willsave,但我不知道的方式 NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:brandId,@"brandId",categoryId,@"categoryId", nil]; [[RKObjectManager sharedManager] postObject:nil path:@"/mywebservice" parameters:params success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) { [self getProductsList]; } failure:^(RKObjectRequestOperation *operation, NSError *error) { }];

NSFetchedResultsController在被pipe理对象被修改时通知它的代理删除更改,并且从不通知插入或更新

我有一个UITableViewController ,这是NSFetchedResultsController的委托。 我的NSFetchedResultsControllerDelegate函数按照Apple文档中的 “Typical Use”进行设置,并将表视图控制器作为获取的结果控制器的委托属性。 我也有一些视图控制器,这些控制器显示在可以修改被pipe理对象的表格视图之上。 这些修改是在相同的托pipe对象上下文中完成的。 在我的应用程序中只有一个托pipe对象上下文构造,并且它是全局访问的。 (我已经把一些print语句放在我的对象语境结构中,以确保我不会在别处意外重新构build它)。 当我修改其中一个托pipe对象时,委托函数controller:didChangeObject被调用,但.Delete 始终是 .Delete 。 当我创build一个托pipe对象时,委托函数根本不会触发。 但是,当我手动调用performFetch()和tableView.reloadData() ,单元格会恢复到正确的状态:删除的行返回,创build任何未插入的行。 结果是删除对象按预期工作(单元格被删除),但更新到对象会导致其单元格被删除,并且对象创build不会触发单元格插入。 我试图创build一个这种行为的简单演示,但是当我从一个空白的应用程序重新创build的情况下,我没有看到这种行为。 所以在我的应用程序中的东西是造成这种奇怪的行为,但我不知道什么。 有任何想法吗? 额外信息: 谓词和sorting描述符的实际构造是通过几个不同的类来完成的,但是通过print(resultsController.fetchRequest.predicate)和print(resultsController.fetchRequest.sortDescriptors)如下: 可选(readState ==“2”或readState ==“1”) 可选([(readState,ascending,compare :),(title,ascending,compare :)]) 我已经把一个打印语句放在我的controller:didChangeObject:方法中,而且我可以看到这只用type.rawValue = 2 (即.Delete ) .Delete ,只有当我修改对象时,而不是当我创build它们。