标签: core-data

如何使用Core Data(iPhone)存储CLLocation?

我正在尝试使用Core Location,MapKit和Core Data框架保存位置并在地图上检索位置.

我所做的是我刚刚创建了名为POI的实体并添加了诸如纬度(双重类型),经度(双重类型)等属性.

简单地说,我的应用程序使用两个NSNumber保存POI.(lat和long)但我觉得必须有一个更聪明的方法来存储CLLocation.

干杯.

iphone store core-data save cllocation

34
推荐指数
3
解决办法
2万
查看次数

核心数据,当NSFetchRequest返回NSDictionaryResultType时如何获取NSManagedObject的ObjectId?

我有一个NSFetchRequest返回对象的属性NSDictionaryResultType.是否有可能在这个字典中获取对象的ObjectId?否则,我将需要运行返回类型的查询,NSManagedObjectResultType对于大量返回的项目,返回类型要慢得多.

iphone core-data nsfetchrequest ios

34
推荐指数
2
解决办法
1万
查看次数

如何让mogenerator识别Transformable属性的正确类型?

我有一个具有单个可转换属性的Core Data模型.我也有这个属性使用自定义NSValueTransformer,在模型中正确设置.

当我使用mogenerator生成/更新我的机器和人类文件时,包含该属性的实体的机器文件总是将属性键入NSObject.为了使Core Data能够使用我的自定义值转换器,此类型必须是变换器可以理解的类型.现在,我通过使用正确的类型重新定义属性,在人工文件中手动执行此操作.这样做可以让变压器工作.但是,我最终得到了几个关于重新定义属性的编译警告.

该版本中指定的最近发布的mogenerator之一指出,现在支持可转换属性.但是,我没有找到任何示例语法来启用此功能.

transformation core-data mogenerator transformable

34
推荐指数
1
解决办法
3386
查看次数

NSFetchedResultsController和NSOrderedSet关系

我在NSFetchedResultsController和iOS 5中提供的新NSOrderedSet关系中遇到了一个问题(理解问题).

我有以下数据模型(好吧,我的真实的不是抽屉和袜子!)但这只是一个简单的例子:

在此输入图像描述

Drawer和Sock都是Core Data模型/商店中的NSManagedObjects.上Drawersocks关系是一个有序的一对多关系Sock.想法是袜子按特定顺序放在抽屉里.上Sockdrawer关系是逆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 …

iphone core-data objective-c ios ios5

34
推荐指数
2
解决办法
6734
查看次数

搜索具有空"to-many"关系的所有对象的Core Data

在与这个问题几乎完全相同的情况下,只有我正在寻找一种与另一种类型没有任何多对多关系的记录.

所以,假设我有一组患者和一组清单.患者可以属于多个列表,并且列表可以包含多个患者.

如何查找不在任何列表中的所有患者? 我正在使用核心数据模型.

更新:想出来,但由于我的声誉<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

34
推荐指数
2
解决办法
3790
查看次数

在Swift中设置NSManagedObject关系

如何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对象?

macos core-data nsmanagedobject ios swift

34
推荐指数
6
解决办法
2万
查看次数

在iOS 8扩展中访问核心数据SQL数据库(在App和Widget扩展之间共享数据)

问题:

无法从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)

sqlite iphone core-data ios ios-app-extension

34
推荐指数
3
解决办法
2万
查看次数

删除Swift 3中Core Data实体中的所有数据

有没有办法批量删除存储在核心数据中所有实体中的所有数据?

我在某个地方读到,在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)

但这似乎不起作用.如果我关闭项目并重新打开它,数据仍然存在.我假设这也是表视图不更新的原因,因为数据实际上并未被删除.

core-data swift3 ios10 xcode8

34
推荐指数
3
解决办法
3万
查看次数

当我单击文本字段时,_PointQueue 类在两者中都实现了...我该如何解决这个问题?

我正在使用 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)。将使用两者之一。哪一个是未定义的。

xcode core-data uitextfield ios swift

34
推荐指数
1
解决办法
1万
查看次数

何时使用Core Data的NSMainQueueConcurrencyType?

正在初始化一个NSManagedObjectContext使用NSMainQueueConcurrencyType只为那MOC存在使用初始化的孩子MOC的情况NSPrivateQueueConcurrencyType

为了给出一些背景知识:我的应用程序具有传统结构,主表视图由a驱动NSFetchedResultsController,数据使用NSOperation具有自己MOC 的子类从Web服务异步导入.我不确定那种情况下的两个MOC是否应该使用NSConfinementConcurrencyType(默认情况下,我相信)或者是否应该使用NSMainQueueConcurrencyType与主线程上的获取结果控制器相关联的MOC 以及后台MOC应该使用的MOC NSConfinementConcurrencyType.

iphone cocoa-touch core-data nsmanagedobjectcontext ios

33
推荐指数
1
解决办法
1万
查看次数