我正在使用核心数据的表视图,我想使用我的每个结果的第一个字母作为部分标题(所以我可以得到部分索引的一面)。 有没有办法做到这一点的关键path? 像下面的东西,我用name.firstLetter作为sectionNameKeyPath (不幸的是,这是行不通的)。 我是否必须手动抓取每个结果的第一个字母并创build我的部分? 放置一个新的属性来放置第一个字母并将其用作sectionNameKeyPath吗? NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:managedObjectContext sectionNameKeyPath:@"name.firstLetter" cacheName:@"Root"]; 谢谢。 **编辑:**我不知道这是否有所作为,但我的结果是日语,按片假名sorting。 我想用这些片假名作为部分索引。
在iPhone上学习核心数据。 在核心数据填充表格视图的部分似乎有几个例子。 CoreDataBooks示例使用段,但是它们是从模型中的完整string生成的。 我想通过姓氏的第一个字母,地址簿,将核心数据表组织成部分。 我可以为每个人创造另一个属性,即一个单一的字母,以便作为部门分工,但是这似乎很糟糕。 这是我开始…伎俩似乎是愚弄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 key […]
build立: 我有一个与B有多对多关系的核心数据对象A.调用关系“items”。 所以,a.items返回与A相关的所有Bs。 现在,我有一个B对象的手动组合的NSSet“itemSet”。 我想要做到以下几点: return all A objects whose "items" relation exactly matches itemSet 我如何构build一个谓词呢? 我试过这个: NSPredicate *predicate = [NSPredicate predicateWithFormat: @"(ALL items in %@)", itemSet]; 但是,这只是给了我Unsupported predicate (null) 。 这个: NSPredicate *predicate = [NSPredicate predicateWithFormat: @"(items in %@)", itemSet]; 告诉我unimplemented SQL generation for predicate 。 有趣,但没有帮助。 那么过滤一个关系的正确方法是什么?
我们有大量的应用程序,我们从远程Web服务获取数据为JSON,然后使用parsing器将其转换为Core-Data模型。 对于我们的一个应用程序,我想我们应该做一些不同的事情。 这个应用程序具有只读数据 ,这是易失性的 ,因此不会在本地caching很长时间 。 JSON 深深地层叠着大量嵌套的“对象” 。 文件通常包含不超过20个顶级项目,但可能高达100K。 我不认为我想用100个实体创build一个核心数据模型,然后使用映射器将JSON导入到其中。 好像是这样的歌舞。 我想我只想坚持JSON的地方容易,并有能力查询它。 如果在iPhone上运行,MongoDB会很好。 iPhone上是否有支持查询的JSON文档存储? 或者,我可以使用一些JSONparsing器将数据转换为某种持久的NSDictionary,并使用谓词查询? 或者也许使用SQLite作为在JSON结构上手动创build索引的BLOB存储? 或者,我应该停止抱怨,并使用核心数据? 🙂 帮助赞赏。
我已经阅读了关于核心数据模型自动/轻量级迁移的文档,但是在实现它的实际中遇到了问题。 据我了解,应用程序应该注意到它的模型和设备上存在的模型已经不一样了。 如果您只添加了属性或关系以及类似的简单更改,则模型应自动升级。 任何指针 – 我需要在xCode中设置的东西吗?
我一直在做一个项目,最近升级到了Xcode 8和Swift 3.0以及iOS 10.但是因为我这样做了,所以我一直无法编译。 我得到了我的每个实体的错误::0:错误:没有这样的文件或目录:''/Users/mark/Library/Developer/Xcode/DerivedData/…/.Account+CoreDataProperties.swift'每个案例有一个 。 (点)前的实体名称:.Account + CoreDataProperties.swift。 我将Code Gen从“Category / Extension”更改为Manual / None,我做了一个干净而干净的目录,删除了DerivedData目录。 有趣的是,当我查看相应的目录时,那里有一个实际的文件,没有点前缀。 这很混乱。 任何人都可以解释吗? 我需要解决这个问题才能继续核心数据。 TIA Mark
我尝试使用以下代码从CoreData中提取数据 NSFetchRequest *request = [[NSFetchRequest alloc] init]; request.entity = [NSEntityDescription entityForName:@"Cave" inManagedObjectContext:self.context]; request.predicate = [NSPredicate predicateWithFormat:@"(latitude > 0) AND (longitude > 0)"]; NSError *error; NSLog(@"%@",[self.context executeFetchRequest:request error:&error]); NSLog(@"%@",[error localizedDescription]); CoreData应该有9个匹配的对象,它find了9个对象。 所以谓词应该工作,但我在控制台中得到这个 2011-09-05 07:41:42.267 CaveConditions[6930:11903] ( "<NSManagedObject: 0x7368060> (entity: Cave; id: 0x7367880 <x-coredata://C825FC9D-3490-4D8A-A811-979B819A2EB6/Cave/p31> ; data: <fault>)", "<NSManagedObject: 0x73547e0> (entity: Cave; id: 0x7356e20 <x-coredata://C825FC9D-3490-4D8A-A811-979B819A2EB6/Cave/p40> ; data: <fault>)", […]
在Xcode 6中,我有一个应用程序,我正在使用Core Data,但在iOS 8 iPhone Simulator的应用程序支持中没有文件夹。 我的文件和核心数据sqlite数据库被存储在哪里?
我试图对接受的这个问题的答案中列出的一个数组进行sorting,但是却碰到了Isuru在这个答案的评论中提到的问题。 也就是说,应该通过实体的“date”属性对数组进行sorting的代码会使编译器投诉“找不到成员'date'” 下面是描述实体的NSManagedObject子类: import Foundation import CoreData @objc(Entry) class Entry: NSManagedObject { @NSManaged var date: NSDate @NSManaged var reflections: AnyObject @NSManaged var contactComment: NSSet @NSManaged var person: NSSet override func awakeFromInsert() { let now:NSDate = NSDate() self.date = now; } } 这里是试图sorting数组的代码: lazy var entries:[Entry] = { var days:[Entry] = self.managedObjectContext!.requestEntity("Entry")as [Entry] days.sort({$0.date < $1.date}) […]
在Swift 2中,以下代码正在工作: let request = NSFetchRequest(entityName: String) 但在Swift 3中却出现错误: 通用参数“ResultType”无法推断 因为NSFetchRequest现在是一个genericstypes。 他们在文件中写到: let request: NSFetchRequest<Animal> = Animal.fetchRequest 所以如果我的结果类是例如Level我应该如何正确地要求? 因为这不起作用: let request: NSFetchRequest<Level> = Level.fetchRequest