在应用程序和今天的Swift扩展之间共享Core Data数据库

时间:2014-10-25 01:38:10

标签: ios widget

我有一个数据库,我的小部件必须从中读取一些数据。我已将成员资格目标设置为应用程序和窗口小部件的所有相关文件。但是有一个问题。

我在主应用程序中有一个帮助类 ,只要我对数据库执行某些操作,它就会获取AppDelegate上下文。代码如下:

class func getEntityAndContext(name:String) -> (entity:NSEntityDescription, context: NSManagedObjectContext){
    var appDel:AppDelegate = UIApplication.sharedApplication().delegate as AppDelegate
    let context:NSManagedObjectContext = appDel.managedObjectContext!
    let entity:NSEntityDescription = NSEntityDescription.entityForName(name, inManagedObjectContext: context)!
    return (entity, context)
}

这种方法可以帮助我解决这些问题:

class func getAll() -> Array<City>{
        let (_, context) = NSManagedObjectWrapper.getEntityAndContext("City")
        let req = NSFetchRequest(entityName: "City")
        req.sortDescriptors = [NSSortDescriptor(key: "order", ascending: true)]
        let citiesList:Array<City> = context.executeFetchRequest(req, error: nil)! as Array<City>
        return citiesList
    }

在我将目标成员身份添加到窗口小部件后,我收到此错误:Use of undeclared type 'AppDelegate'。这是有道理的,但我不知道如何解决它。你能帮我吗?

PS:我也注意到我也得到了这个错误:Use of unresolved identifier 'NSFetchRequest'。我究竟做错了什么?这肯定不是这样做的方法......

1 个答案:

答案 0 :(得分:2)

我在这里找到答案: https://github.com/pjchavarria/Swift-Widget

这个git项目展示了如何在小部件中使用核心数据。