我是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]
它将通过预测名称返回所有数据。