iphone - 核心数据删除对象函数

标签 iphone xcode object core-data

我有一个与核心数据和删除对象函数相关的问题,这些函数是在为某个实体创建 NSManagedObject 子类时自动创建的。 我必须实体;一个称为“标签”,具有一种称为“艺术家”的关系,另一个称为“艺术家”的实体,具有一种称为“标签”的关系。艺术家关系目标是实体艺术家,其反向关系设置为标签。

我添加了几个同名的“艺术家”(Freekey Zekey),我正在尝试使用下一个代码删除它们

NSError *error = nil;
NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:&error];

// Grab the artist and delete
Artist *freekey = [fetchedObjects objectAtIndex:0];
[freekey.label remove ArtistsObject:freekey];


// Save everything
if([context save:&error])
{
    NSLog(@"The save was successful!");
}
else
{
    NSLog(@"The save wasn't successful: %@", [error localizedDescription]);
}

执行此代码后,我读取了数据,但只有当我只有一个“Freekey Zekey”时,艺术家才会被删除。但是,当我再次运行该应用程序时,fetchedObjects 中的对象数量仍然是 1。如果我有多个“Freekey Zekey”,我希望只删除一个,但这种情况不会发生。

我尝试使用此代码删除所有“Freekey Zekey”

for(int i=0; i < [fetchedObjects count]; i++)
{
    freekey = [fetchedObjects objectAtIndex:i];

    [freekey.label remove ArtistsObject:freekey];
}

它可以工作,但是当我检查 fetchedObjects 中的对象数量时,它不是 0,我相信这意味着对象尚未被删除。

如何彻底删除一个对象?

最佳答案

答案是:您并没有完全从数据库中删除艺术家。您刚刚删除了关系,要完成删除,您还需要删除艺术家。

for(int i=0; i < [fetchedObjects count]; i++)
{
    freekey = [fetchedObjects objectAtIndex:i];
    [freekey.label removeArtistsObject:freekey];
    [context deleteObject:freekey];
}
if([context save:&error])
{
    NSLog(@"The save was successful!");
}
else
{
    NSLog(@"The save wasn't successful: %@", [error localizedDescription]);
}

希望有帮助。

关于iphone - 核心数据删除对象函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14951355/

相关文章:

java - 内部类实例变量遮蔽

iphone - 删除了Team Provisioning Profile :* in the Provisioning Portal,怎么办?

iphone - 如何手动读取JSON

ios - 通用证书适用于生产但不适用于开发

c++ - Mac 上 Boost 的链接器错误 (OSX 10.10.02 | Xcode 6.1.1)

xcode - 删除 xcode 键绑定(bind)

javascript - p5.j​​s 中两个不同形状的物体碰撞检测

iphone - 奇怪的 NSDate 和 NSDateFormatter 行为

iPhone 应用程序启动时间和核心数据迁移

c++ - C++ 中的循环指针