iOS核心数据 - 插入前如何检查

时间:2012-07-02 05:13:56

标签: iphone ios core-data ios4

我在我的应用程序中使用核心数据。 我知道如何在其中插入一个新对象。它将歌曲信息存储在其中。 下面是我的表结构

song_id

song_title

song_description

Songs *aSong = (Poem *)[NSEntityDescription insertNewObjectForEntityForName:@"Songs" inManagedObjectContext:myManagedObjectContext];  

这里我想知道如何在将表格再次插入表格之前检查song_id是否已经可用。

我的意思是在插入新对象之前,我该如何检查它是否存在。

还如何检查表是否为空?

请告诉我并感谢

2 个答案:

答案 0 :(得分:5)

NSError * error;
NSFetchRequest * checkExistance = [[NSFetchRequest alloc] init];
[checkExistance setEntity:[NSEntityDescription entityForName:NSStringFromClass([yourClass class]) inManagedObjectContext:yourManagedContext]];
[checkExistance setFetchLimit:1];
[checkExistance setPredicate:[NSPredicate predicateWithFormat:@"ID == %@", yourID]];
Songs *yourSong = [[managedObjectContext executeFetchRequest:checkExistance error:&error] lastObject];

现在在这里,如果你的存在,即不存在,那么它就不存在。

希望这有帮助。

答案 1 :(得分:1)

您可以使用 NSEntityDescription 方法 entityForName:inManagedObjectContext:从您的托管对象模型中获取实体。

现在 executeFetchRequest 方法将提供我们可以知道记录退出的数组。根据您的要求,您可以插入新记录

参考Fetching Managed Objects链接。