使用CoreData和swift在DB中搜索数据

时间:2016-02-15 05:48:13

标签: ios swift core-data

我是swift和CoreData的新手,我遇到了一个问题:

  1. 我有两列数据库:例如“name”和“number” 姓名 鲍勃2 海伦娜5 赫尔加1 Matilda 0

  2. 我在CoreData上连接我的UITableViewController和DB,它正在工作(我在iphone模拟器中看到所有数据库)

  3. 我想在我的数据库单元格中使用swift查找带有值的数字“number”,例如“1”和“2”,并从列“name”显示正确的单元格,结果我想看到: 鲍勃2 Helga 1

  4. 如何做得更好?我尝试使用NSPredicate,但我不明白它是如何工作的以及如何使它能够工作。

    谢谢!

1 个答案:

答案 0 :(得分:1)

您好在NSManagedObject扩展程序中添加以下功能

1)使用预测

从id获取coredata中的数据
Cheese:: {
    Cheese() { //constructor stuff };
    ... // other constructors, copy, etc.
    ~Cheese() { //destructor stuff };
    int weigh() { return weighed; }
    int shred() { return shredded; }
    int melt() { return melted; }
}

它将按行id

返回预测列名数据

2)从coredata

获取所有数据
class func Search(PredictName:String, Uid:String, entityDescription: String,managedObjectContext: NSManagedObjectContext = appDelegate.managedObjectContext) -> [AnyObject]? 
{
    var ar:[AnyObject] = []
    do
    {
        let predicate = NSPredicate(format: "\(PredictName) == %@", Uid)
        let request = NSFetchRequest(entityName: entityDescription)
                   request.predicate = predicate
         let result = try managedObjectContext.executeFetchRequest(request)
                    ar = result
                }
                catch(_)
                {
                    ar = []
                }
                return ar as [AnyObject]
            }

Function Call :
var lists:[ModelClassName]?  = AdvertisementDataList.findByTypeInContext("user_id", url: self.Uid, entityDescription: "CoredataEntityName") as? [AdvertisementDataList]

功能调用:

class func Search(PredictName:String, entityDescription: String,managedObjectContext: NSManagedObjectContext = appDelegate.managedObjectContext) -> [AnyObject]?
        {
            var ar:[AnyObject] = []
            do
            {
                let predicate = NSPredicate(format: "\(PredictName)")
                let request = NSFetchRequest(entityName: entityDescription)
                request.predicate = predicate
                let result = try managedObjectContext.executeFetchRequest(request)
                ar = result
            }
            catch(_)
            {
                ar = []
            }
            return ar as [AnyObject]
        }

它将通过预测名称返回所有数据。