SWIFT:在保存到 sqlite 之前检查数据是不是存在

Posted

技术标签:

【中文标题】SWIFT:在保存到 sqlite 之前检查数据是不是存在【英文标题】:SWIFT: Checking data IF EXIST before saving into sqliteSWIFT:在保存到 sqlite 之前检查数据是否存在 【发布时间】:2016-01-14 17:30:18 【问题描述】:

我可以通过这种方式将数据通过 SWIFT 保存到 sqlite 数据库中。

    for aItem in jsonItems 

    let appDel:AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
    let moContext:NSManagedObjectContext = appDel.managedObjectContext

    let ModelAnimal = NSEntityDescription.insertNewObjectForEntityForName("TBL_animal", inManagedObjectContext: moContext) as! ModelAnimal

     ModelAnimal.wId = aItem["wId"] as? NSNumber
     ModelAnimal.wName = aItem["wName"] as? String

                            do 
                                try moContext.save()

                             catch 
                                print("Data not Saved in Database")
                            

                        

但是在将数据保存到 sqlite 之前检查 IF EXIST 的最简单方法是什么?

【问题讨论】:

我假设您使用的是 CoreData,而不是 sqlite 或 SQL!? 【参考方案1】:

使用 Core Data,您可以通过获取条目来检查条目是否已经存在,并使用谓词使用任何字段来标识唯一条目。假设您的 wId 是唯一的,您会这样做:

NSFetchRequest *fetch = [NSFetchRequest fetchRequestWithEntityName:@"TBL_animal"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"wId = %@", ModelAnimal.wId"];
fetch.predicate = predicate;

NSError *error = nil;
NSUInteger count = [moContext countForFetchReuqest:fetch error:&error];

这将告诉您有多少现有对象与您的谓词匹配。

【讨论】:

以上是关于SWIFT:在保存到 sqlite 之前检查数据是不是存在的主要内容,如果未能解决你的问题,请参考以下文章

Android Sqlite 如果不存在则插入

核心数据不直接保存到 sqlite

核心数据检查是不是已经保存,Swift

在插入之前检查 sqlite 中的重复项(核心数据)

Swift中SQLite使用2

在保存到 CoreData 之前检查数据中的 nil