我是swift和CoreData的新手,但有一个问题:


我有2列的DB:例如“名称”和“数字”
姓名号码
鲍勃2
海伦娜5
赫尔加1
玛蒂尔达0
我将UITableViewController与整个CoreData上的数据库连接,并且可以正常工作(我在iPhone的模拟器中看到了所有数据库)
我想在带有值的列“ number”的数据库单元格中快速找到值,例如“ 1”和“ 2”,并从列“ name”中显示正确的单元格,结果我想看到:
鲍勃2
赫尔加1


怎么做呢?我尝试使用NSPredicate,但是我不了解它是如何工作的以及如何使它起作用。

谢谢!

最佳答案

嗨,在您的NSManagedObject扩展中添加以下功能

1)使用预测通过id从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]


它将按行ID返回您预测的列名称数据

2)从coredata获取所有数据

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]
        }


函数调用:

var lists:[ModelClassName]?  = AdvertisementDataList.findByTypeInContext("user_id", entityDescription: "CoredataEntityName") as? [AdvertisementDataList]


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

10-01 13:57
查看更多