Tag: 核心数据

NSPredicate'ALL或ANY操作符的左侧必须是NSArray或NSSet'

不完全确定为什么这不是现在的工作,我以为它以前一直工作。 有没有人看到这个FetchRequest构造的问题? – (NSArray *)entriesForDate:(NSDate *)date { NSFetchRequest *request = [[NSFetchRequest alloc]initWithEntityName:@"Entry"]; NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY addedOn.unique like %@", [T3Utility identifierForDate:date]]; request.predicate = predicate; NSError *error = nil; NSArray *matches = [self.database.managedObjectContext executeFetchRequest:request error:&error]; return matches; } 再次,我99%肯定,这个代码一直在工作,直到最近,所以即时通讯思考也许还有别的事情在我的代码在某处。 。 但是当我通过debugging器运行它时,这是挂起的地方。 这是我的错误: ALL或ANY操作符的左侧必须是NSArray或NSSet 有任何想法吗? 谢谢!

Swift – 是懒惰的线程安全?

也许这个问题需要一些背景。 我一直在使用Core Data处理持久层,并发现Core Data不是线程安全的,因此NSManagedObjectContext只能被限制在每个线程中。 所以我的方法是创build自定义后台线程NSManagedObjectContext执行获取,保存等,同时也创build主线程NSManagedObjectContext将用于NSManagedObject获取NSManagedObjectId并将其传递给调用方法。 默认情况下,Xcode使用lazy var为所有NSManagedObjectContext , NSManagedObjectModel等生成与Core Data相关的模板代码。 所以我的问题是是否要 使用lazy var实例化方法来创buildNSManagedObjectContext ,只要lazy var为每个试图访问的线程启动一个对象(不是线程安全的?) 要么 在每个线程中为NSManagedObjectContext声明单独的variables,并使所有线程相关的方法引用两个不同的NSManagedObjectContext前提是lazy var是线程安全的(?),并且在被访问时只创build一次而不pipe线程。 先谢谢你! 编辑:任何正在为核心数据并发问题而苦恼的人, 本文列出了一个非常好的devise模式,正如Aaron在下面的评论中指出的那样!

核心数据encryption

我有一个关于核心数据encryption的问题。 我在Core Data SQLite数据库中存储了一些敏感的用户数据。 临界值都是可变换的,我正在使用AES256对它们进行encryption和解密,包括每个值的个人IV。 encryption密钥是用户select的密码的SHA512散列。 迄今为止,这工作得很好。 现在关于用户密码。 当用户启动应用程序时,他被要求input密码。 密码正在用SHA512散列并存储在iOS钥匙串中。 对于每个写入或读取操作,NSValueTransformer将从钥匙串获取密码。 如果应用程序正在closures,我将从密钥链中删除密码哈希。 在我的核心数据库中,我有一个特殊的实体,它有一个随机数!= 0,因为它只是一个值。 为了testing用户是否input了正确的密码,我获取这个实体并读取数字。 如果是=! 0,我知道密码是正确的,因为当解密失败NSValueTransformer总是返回0。 现在我的实际问题:你认为这是一个很好的encryption方法? 如果input的密码是正确的,你还会怎么testing? 我有点担心在应用程序运行时将密码哈希存储在钥匙串中会使得一切都变慢,因为NSValueTransformer必须始终访问钥匙串。 将密码散列保存在内存中是否足够安全,所以应用程序closures时会被删除?

核心数据的RestKit临时对象的最佳实践

背景:我有一个托pipe对象,Car。 我有一个RESTfulsearchAPI坐在本地主机/汽车/search。 返回的结果是来自服务器端的Car对象,但我只想保存用户select的那个。 我想放弃search的其他车辆。 起初我都喜欢: @interface Car : NSManagedObject //<— managed object @property (nonatomic, strong) NSNumber* year; @property (nonatomic, strong) NSString* make; @property (nonatomic, strong) NSString* model; @end @interface TransientCar : NSObject //<— regular NSObject! @property (nonatomic, strong) NSNumber* year; @property (nonatomic, strong) NSString* make; @property (nonatomic, strong) NSString* model; @end 为了显示search结果,我将REST APIsearch结果JSON映射到TransientCar对象中,但不将它们保存到上下文中。 默认情况下,如果映射托pipe对象,RestKit将调用其+对象便利工厂创build对象并将其插入当前上下文(硬编码到sharedManager的对象存储的上下文,btw!) 这似乎是不可持续的。 […]

iPhone中的核心数据默认使用哪个持久性存储

我在我的应用程序中创build多个持久性存储,但我只使用一个持久性存储协调器和托pipe对象模型。 现在我的问题是,当我调用pipe理对象上下文的保存方法,它将用来保存对象的持久存储。 所以我想指定要用来保存对象的持久存储。 从数据库中获取对象时,同样的,我想确保我的提取查询应该在特定的商店上执行,以便我只从该商店获取对象。 任何帮助?

NSP预先消除了SQL的GROUP BY等价物

为了简化:表中有三列名为卡片。 id packTitle术语 id是一个列 – 从0到100的整数 packTitle – string描述包,可以说有三种包PACK1,PACK2,PACK3 长期 – 101个项目的不同未sorting的名称。 通过SQL语句 select packTitle from cards group by packTitle; 我可以得到3件物品的清单。 你可以build议NSPredicate相当于SQL语句GROUP BY。 我需要得到一个数组来填充UITableView。

防止核心数据合并为一个表

有没有办法告诉核心数据不把所有的实体放在一个表中,当他们都从基础实体inheritance? 下面是一个例子:我们有一个“实体”对象,我们有一个从“实体”inheritance的“人”和“产品”。 核心数据创build一个“实体”,“人”和“产品”组合字段的ZENTITY表。 我们想要的是核心数据创build两个单独的表,一个用于“Person”,一个用于“Product”。 这甚至有可能吗? 网上没有任何网上谈到这个…

coredata – 获取一个属性到一个数组中

目标:我想从数据库(核心数据)中获取一个属性(从一个实体)的值到一个数组中。 例 实体名称=员工 属性= employeeID 我只想将所有employeeID填充到数组/集合中。 题 下面给出的是我的实现,我只是觉得它是一种方式,我想知道是否有更好的方法来做到这一点。 码 NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Employees"]; fetchRequest.resultType = NSDictionaryResultType; [fetchRequest setPropertiesToFetch:[NSArray arrayWithObjects:@"employeeID", nil]]; NSError *error = nil; NSArray *results = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error]; NSMutableArray *employeeIDs = [NSMutableArray array]; for(id currentRecord in results) { [employeeIDs addObject:[currentRecord objectForKey:@"employeeID"]]; }

NSFetchedResultsController在合并“NSManagedObjectContextDidSaveNotification”后没有显示所有结果

我有一个NSFetchedResultsController用谓词获取对象: isTrash == NO 大多数情况下,这是按预期工作的,但是当一个对象被取消时,取出的结果控制器不会取出这个未被分离的对象。 怎么了?

核心数据不支持所有和IN谓词

我有这样的要求: NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY attributes.attribute.attributeId IN %@", attributeIds]; 这将返回一个对象列表,它具有一个或多个我设置的属性。 我想获得具有所有传递属性的对象列表,所以我试着: NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ALL attributes.attribute.attributeId IN %@", attributeIds]; 但是我有一个例外: 'NSInvalidArgumentException', reason: 'Unsupported predicate (null)' 无论如何,我甚至不确定这是否是正确的要求。 说我有属性列表: [red, green, blue] , 我怎样才能得到至less有这些属性的所有对象? * Object_1 (red, green, blue) * Object_2 (red, green, blue, yellow, brown) * Object_3 (red, green blue, black, brown) 但不是Object_4 (red, […]