标签: core-data

如何复制或复制核心数据管理对象?

我有一个托管对象("A"),它包含各种属性和关系类型,它的关系也有自己的属性和关系.我想做的是"复制"或"复制"以对象"A"为根的整个对象图,从而创建一个与"A"非常相似的新对象"B".

更具体地说,"B"(或其子代)所包含的关系都不应指向与"A"相关的对象.应该有一个完全相同的关系完整的新对象图,所有对象具有相同的属性,但当然不同的id.

有一种明显的手动方式可以做到这一点,但我希望了解一种更简单的方法,这在核心数据文档中并不完全明显.

TIA!

cocoa core-data nsmanagedobject

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

有没有办法实例化NSManagedObject而不插入它?

我有一个用户界面来插入一个Transaction.一旦用户点击加号,他就会获得屏幕,我想要实例化我的核心数据NSManagedObject实体,让用户使用它.然后当用户点击"保存"按钮时,我将调用保存功能.

所以到代码:

transaction = (Transaction *)[NSEntityDescription insertNewObjectForEntityForName:@"Transaction" inManagedObjectContext:self.managedObjectContext];
//even if i dont call save: its going to show up on my table
[self.managedObjectContext save:&error]
Run Code Online (Sandbox Code Playgroud)

PS我在该表上使用NSFetchedResultsController,我看到NSFetchedResultsController正在向表中插入一个节和一个对象.

我的想法是,如果有一种方法来实例化事务NSManagedObject我可以更新它而不保存直到客户选择.

iphone core-data nsfetchedresultscontroller nsmanagedobject

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

iOS:删除所有核心数据Swift

关于如何删除swift中的所有核心数据,我有点困惑.我创建了一个带IBAction链接的按钮.点击按钮我有以下内容:

let appDel: foodforteethAppDelegate = UIApplication.sharedApplication().delegate as foodforteethAppDelegate
    let context: NSManagedObjectContext = appDel.managedObjectContext
Run Code Online (Sandbox Code Playgroud)

然后我用各种方法搞砸了尝试删除所有核心数据内容,但我似乎无法让它工作.我已经使用removeAll从存储的数组中删除但仍然无法从核心数据中删除.我假设我需要某种类型的for循环但不确定如何从请求中创建它.

我尝试应用删除单行的基本原则

func tableView(tableView: UITableView!, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath!) {

    let appDel: foodforteethAppDelegate = UIApplication.sharedApplication().delegate as foodforteethAppDelegate
    let context:NSManagedObjectContext = appDel.managedObjectContext

    if editingStyle == UITableViewCellEditingStyle.Delete {

        if let tv = tblTasks {
            context.deleteObject(myList[indexPath!.row] as NSManagedObject)
            myList.removeAtIndex(indexPath!.row)
            tv.deleteRowsAtIndexPaths([indexPath!], withRowAnimation: UITableViewRowAnimation.Fade)
        }

        var error: NSError? = nil
        if !context.save(&error) {
            abort()
        }

    }

}
Run Code Online (Sandbox Code Playgroud)

但是,这个问题是当我单击一个按钮时,我没有indexPath值,而且我还需要遍历所有我无法用上下文做的值.

core-data ios swift

54
推荐指数
8
解决办法
5万
查看次数

检查Core Data中是否存在对象的最快方法?

我想知道对象是否在Core Data中持久存在.例如,我在Core Data中有Friends,我通过firstName识别它们.我可以查询核心数据以查看"George"是否已知.如果结果集数组包含多个零对象,我知道George就在那里.但是核心数据将整个内容加载到内存中,我实际上只是想知道乔治是否存储.

我怎样才能以最有效的方式做到这一点?

iphone core-data objective-c

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

iPhone:将布尔值保存到Core Data中

我将我的一个核心数据属性设置为布尔值.现在,我需要设置它,但XCode一直告诉我它可能不响应setUseGPS.

[ride setUseGPS: useGPS.on];
Run Code Online (Sandbox Code Playgroud)

在核心数据中设置布尔值的方法是什么?我所有其他属性都以这种方式设置,并且它们运行良好.那么,不确定为什么布尔值无法以这种方式设置?

iphone boolean core-data uiswitch

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

如何将NSManagedObject从一个上下文复制或移动到另一个上下文?

我有一个相当标准的设置,一个从未保存的暂存器MOC(包含从Web下载的一堆对象)和另一个永久MOC持久化对象.当用户从scratchMOC中选择一个对象添加到她的库时,我想要1)从scratchMOC中删除对象并插入到permanentMOC中,或者2)将对象复制到permanentMOC中.该核心数据FAQ说,我可以复制的对象是这样的:

NSManagedObjectID *objectID = [managedObject objectID];
NSManagedObject *copy = [context2 objectWithID:objectID];
Run Code Online (Sandbox Code Playgroud)

(In this case, context2 would be permanentMOC.) However, when I do this, the copied object is faulted; the data is initially unresolved. When it does get resolved, later, all of the values are nil; none of the data (attributes or relationships) from the original managedObject are actually copied or referenced. Therefore I can't see any difference between using this objectWithID: method and just inserting an entirely new …

cocoa cocoa-touch core-data nsmanagedobject nsmanagedobjectcontext

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

dispatch_sync与主队列上的dispatch_async

跟我说,这需要一些解释.我有一个看起来像下面的功能.

上下文:"aProject"是名为LPProject的核心数据实体,其名为"memberFiles"的数组包含另一个名为LPFile的Core Data实体的实例.每个LPFile表示磁盘上的文件,我们要做的是打开每个文件并解析其文本,查找指向OTHER文件的@import语句.如果我们找到@import语句,我们希望找到它们指向的文件,然后通过向代表第一个文件的核心数据实体添加关系,将该文件"链接"到该文件.由于所有这些都需要一些时间在大文件上,我们将使用GCD在主线程上完成.

- (void) establishImportLinksForFilesInProject:(LPProject *)aProject {
    dispatch_queue_t taskQ = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
     for (LPFile *fileToCheck in aProject.memberFiles) {
         if (//Some condition is met) {
            dispatch_async(taskQ, ^{
                // Here, we do the scanning for @import statements. 
                // When we find a valid one, we put the whole path to the imported file into an array called 'verifiedImports'. 

                // go back to the main thread and update the model (Core Data is not thread-safe.)
                dispatch_sync(dispatch_get_main_queue(), ^{

                    NSLog(@"Got to main thread.");

                    for …
Run Code Online (Sandbox Code Playgroud)

cocoa core-data objective-c grand-central-dispatch objective-c-blocks

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

自动代码中的无效重新声明生成NSManagedObject子类Swift 3

使用Xcode版本8.1.

在.xcdatamodeld文件中创建名为"MapRegionObject"的实体.在此输入图像描述

使用自动代码生成器,单击导航栏上的编辑器 - >创建NSManagedOject子类...

有两个文件:MapRegionObject + CoreDataClass.swift和MapRegionObject + CoreDataProperties

屏幕截图中显示的两个文件中的错误:MapRegionObject + CoreDataClass.swift 在此输入图像描述

MapRegionObject + CoreDataProperties 在此输入图像描述

请帮我解决这个问题,非常感谢你!

core-data nsmanagedobject ios ios8.1 swift3

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

核心数据保存错误(NSValidationErrorKey,Cocoa错误1570)保存NSDate

我在Xcode中保存到Core数据对象时遇到错误.

Xcode说错误是在NSDate变量'datum'中,但我几乎尝试了所有内容.错误是:

2011-07-12 18:01:29.068 WeekLijstje[3205:207] Core Data Save Error
NSValidationErrorKey    datum
NSValidationErrorPredicate  (null)

NSValidationErrorObject
<DagLijst: 0x6e2fcd0> (entity: DagLijst; id: 0x6e2fd30 <x-coredata:///DagLijst/t99F423FC-AAE9-4692-9264-EF0FF7A020572> ; data: {
    Voedsel = nil;
    datum = nil;
    hoeveelheid = 0;
    punten = 0;
})
NSLocalizedDescription:The operation couldn’t be completed. (Cocoa error 1570.)
Run Code Online (Sandbox Code Playgroud)

一个小代码snipet:

        DagLijst *newDaglijst = [NSEntityDescription insertNewObjectForEntityForName:@"DagLijst" inManagedObjectContext:self.managedObjectContext];

        NSDate *selDatum = [NSDate date];
        newDaglijst.punten = [NSNumber numberWithInteger:10];
        newDaglijst.hoeveelheid = [NSNumber numberWithInt:100];
        newDaglijst.Voedsel = geselecteerdVoedsel;
        newDaglijst.datum = selDatum;
        NSError *error = nil;
        if (![newDaglijst.managedObjectContext save:&error]) {
... …
Run Code Online (Sandbox Code Playgroud)

xcode core-data nsdate

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

无法在iOS上创建托管对象上下文

我创建了一个非核心数据项目.我现在想要使用核心数据.在构建阶段,我将我的二进制文件与CoreData.framework链接起来.在我的应用程序委托方法中,我想手动创建一个托管对象上下文

NSManagedObjectContext *aContext = [[NSManagedObjectContext alloc] init];
Run Code Online (Sandbox Code Playgroud)

当我执行上述操作时,出现以下错误:

Receiver 'NSManagedObjectContext' for class message is a forward declaration.
Run Code Online (Sandbox Code Playgroud)

关于我可能做错什么的任何建议?

core-data ios

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