我正在尝试使用Core Location,MapKit和Core Data框架保存位置并在地图上检索位置.
我所做的是我刚刚创建了名为POI的实体并添加了诸如纬度(双重类型),经度(双重类型)等属性.
简单地说,我的应用程序使用两个NSNumber保存POI.(lat和long)但我觉得必须有一个更聪明的方法来存储CLLocation.
干杯.
我有一个NSFetchRequest返回对象的属性NSDictionaryResultType.是否有可能在这个字典中获取对象的ObjectId?否则,我将需要运行返回类型的查询,NSManagedObjectResultType对于大量返回的项目,返回类型要慢得多.
我有一个具有单个可转换属性的Core Data模型.我也有这个属性使用自定义NSValueTransformer,在模型中正确设置.
当我使用mogenerator生成/更新我的机器和人类文件时,包含该属性的实体的机器文件总是将属性键入NSObject.为了使Core Data能够使用我的自定义值转换器,此类型必须是变换器可以理解的类型.现在,我通过使用正确的类型重新定义属性,在人工文件中手动执行此操作.这样做可以让变压器工作.但是,我最终得到了几个关于重新定义属性的编译警告.
该版本中指定的最近发布的mogenerator之一指出,现在支持可转换属性.但是,我没有找到任何示例语法来启用此功能.
我在NSFetchedResultsController和iOS 5中提供的新NSOrderedSet关系中遇到了一个问题(理解问题).
我有以下数据模型(好吧,我的真实的不是抽屉和袜子!)但这只是一个简单的例子:

Drawer和Sock都是Core Data模型/商店中的NSManagedObjects.上Drawer的socks关系是一个有序的一对多关系Sock.想法是袜子按特定顺序放在抽屉里.上Sock的drawer关系是逆socks关系.
在UIViewController中,我正在基于这些实体绘制UITableView.我正在用桌子喂餐桌NSFetchedResultsController.
- (NSFetchedResultsController *)fetchedResultsController1 {
if (_fetchedResultsController1 != nil) {
return _fetchedResultsController1;
}
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Sock" inManagedObjectContext:[NSManagedObjectContext MR_defaultContext]];
[fetchRequest setEntity:entity];
NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"drawer.socks" ascending:YES];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]];
self.fetchedResultsController1 = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:[NSManagedObjectContext MR_defaultContext] sectionNameKeyPath:nil cacheName:@"SocksCache"];
self.fetchedResultsController1.delegate = self;
return _fetchedResultsController1;
}
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我得到以下错误: *** Terminating app due to …
在与这个问题几乎完全相同的情况下,只有我正在寻找一种与另一种类型没有任何多对多关系的记录.
所以,假设我有一组患者和一组清单.患者可以属于多个列表,并且列表可以包含多个患者.
如何查找不在任何列表中的所有患者? 我正在使用核心数据模型.
更新:想出来,但由于我的声誉<100,我无法回答我自己的问题.这是我做的:
NSPredicate *predicate = [NSPredicate
predicateWithFormat:@"lists.@count == 0"];
[fetchRequest setPredicate:predicate];
Run Code Online (Sandbox Code Playgroud)
然后,当我运行获取请求时,它只会启动没有附加列表的患者.
iphone many-to-many core-data nsfetchedresultscontroller ios
如何NSManagedObject在Swift 的子类中将对象添加到关系属性?
在Objective-C中,当您NSManagedObject从数据模型在Xcode中生成子类时,会有一个自动生成的类扩展,其中包含如下声明:
@interface MyManagedObject (CoreDataGeneratedAccessors)
- (void)addMySubObject: (MyRelationshipObject *)value;
- (void)addMySubObjects: (NSSet *)values;
@end
Run Code Online (Sandbox Code Playgroud)
然而,Xcode目前缺乏Swift类的这一类生成功能.
如果我尝试直接在Swift对象上调用等效方法:
myObject.addSubObject(subObject)
Run Code Online (Sandbox Code Playgroud)
...我在方法调用上遇到编译器错误,因为这些生成的访问器不可见.
我已经将关系属性声明为@NSManaged,如文档中所述.
或者我是否必须为具有关系的数据模型恢复Objective-C对象?
问题:
无法从Today View中的Widget扩展中访问应用程序的Core Data数据库.
应用程序本身能够按照iOS 8中的正常情况读取和写入数据库,但扩展将无法创建存储,导致错误,无法写入文件.
日志如下:
Error Domain=NSCocoaErrorDomain Code=512 "The operation couldn’t be completed. (Cocoa error 512.)"
reason = "Failed to create file; code = 2
Run Code Online (Sandbox Code Playgroud) 有没有办法批量删除存储在核心数据中所有实体中的所有数据?
我在某个地方读到,在iOS 9或10中,苹果引入了批量删除的方法,但我似乎无法找到任何有关它的好信息.
最终,我只需要一个通过实体的函数,并删除其中的所有数据.看起来它应该很简单,但它的文档/教程已经证明非常难以找到.
有什么想法吗?
编辑
我将以下代码添加到附加到按钮的IBAction中:
@IBAction func clearAllData(_ sender: AnyObject) {
let fetch = NSFetchRequest<NSFetchRequestResult>(entityName: "PLProjects")
let request = NSBatchDeleteRequest(fetchRequest: fetch)
//get the data from core data
getPLData()
//reload the table view
tableView.reloadData()
}
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用.如果我关闭项目并重新打开它,数据仍然存在.我假设这也是表视图不更新的原因,因为数据实际上并未被删除.
我正在使用 xcode 13 并在 coredata 上制作演示。
objc[6188]:类 _PathPoint 在 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/ 中实现Library/PrivateFrameworks/UIKitCore.framework/UIKitCore (0x114a8fa78) 和 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/系统/库/PrivateFrameworks/TextInputUI.framework/TextInputUI (0x12cd4a8b0)。将使用两者之一。哪一个是未定义的。
objc[6188]:类 _PointQueue 在 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/ 中实现Library/PrivateFrameworks/UIKitCore.framework/UIKitCore (0x114a8fa50) 和 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/系统/库/PrivateFrameworks/TextInputUI.framework/TextInputUI (0x12cd4a8d8)。将使用两者之一。哪一个是未定义的。
正在初始化一个NSManagedObjectContext使用NSMainQueueConcurrencyType只为那MOC存在使用初始化的孩子MOC的情况NSPrivateQueueConcurrencyType?
为了给出一些背景知识:我的应用程序具有传统结构,主表视图由a驱动NSFetchedResultsController,数据使用NSOperation具有自己MOC 的子类从Web服务异步导入.我不确定那种情况下的两个MOC是否应该使用NSConfinementConcurrencyType(默认情况下,我相信)或者是否应该使用NSMainQueueConcurrencyType与主线程上的获取结果控制器相关联的MOC 以及后台MOC应该使用的MOC NSConfinementConcurrencyType.
core-data ×10
ios ×7
iphone ×6
swift ×2
cllocation ×1
cocoa-touch ×1
ios10 ×1
ios5 ×1
macos ×1
many-to-many ×1
mogenerator ×1
objective-c ×1
save ×1
sqlite ×1
store ×1
swift3 ×1
uitextfield ×1
xcode ×1
xcode8 ×1