2016-08-10 127 views
3

我將CoreData添加到我的應用程序。簡單的抓取是好的,但是當我嘗試使用謂詞獲取數據時,我在AppDelegate中得到異常。swift CoreData謂詞

func fetchWithPredicate(table: String, pred: String)->NSArray 
{ 
    var appDel : AppDelegate = (UIApplication.sharedApplication().delegate as! AppDelegate); 
    var context : NSManagedObjectContext = appDel.managedObjectContext 
    var request = NSFetchRequest(entityName: table) 
    request.predicate = NSPredicate(format: pred)//exception occurs on this string 
    request.returnsObjectsAsFaults = false 
    var results: NSArray = NSArray() 
    do{ 
     results = try context.executeFetchRequest(request) 
    } 

    catch{} 

    return results 
} 

我的謂詞是這樣的:"routeFormed == %@"+route.identifier!,其中route.identifierString。我應該添加一些東西到AppDelegate或我的實體?此外,我打開.sqlite文件,sqlitebrowser,我應該加用可見的名稱或者說,我在數據庫(i.e. "routeFormed" or "ZROUTEFORMED")?

回答

3

中看到的謂詞做創建謂詞爲字符串,綁定在任何但是 瑣碎的情況下失敗。創建謂詞作爲

let predicate = NSPredicate(format: "routeFormed == %@", route.identifier) 

let predicate = NSPredicate(format: "%K == %@", "routeFormed", route.identifier) 

並傳遞到該找取請求。謂詞中的鍵是核心數據模型 檢查器中定義的實體屬性的名稱 。

+0

我意識到爲什麼它不起作用,非常感謝! – Jamil