我有一個獲取請求,我想使用結果來通知其他功能。抓取是在另一個函數中使用函數的輸出?
func getExercises() {
guard let managedObjectContext = managedObjectContext else { return }
let userExercise = UserExercise(context: managedObjectContext)
let request: NSFetchRequest<UserExercise> = UserExercise.fetchRequest()
request.predicate = NSPredicate(format: "usersroutine == %@", self.routineName)
do {
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let context = appDelegate.persistentContainer.viewContext
let queryResults = try context.fetch(request)
print ("num of results = \(queryResults.count)")
for exercise in queryResults as [NSManagedObject] {
print("Exercise NAME: \(exercise.value(forKey: "name"))")
}
} catch {
print("Error with request: \(error)")
}
其他功能(添加首都其中id所要的輸出定):
func configure(_ cell: TodaysRoutineTableViewCell, at indexPath: IndexPath) {
let userExercise = THE GET EXERCISE FUNCTIONS OUTPUT(at: indexPath)
和另:
fileprivate func updateView() {
var hasUserExercises = false
if let UserExercise = THE GET EXERCISE FUNCTIONS OUTPUT {
hasUserExercises = UserExercise.count > 0
}
我想也許ID只需添加queryResults在那裏,它會很好,但作爲本地功能,我只是得到錯誤。什麼是實現這一目標的正確方法?
更新,以顯示錯誤的圖像
// MARK: - COREDATA FETCH
func getExercises(completion: (([NSManagedObject]?, NSError?) -> Void)?) {
guard let managedObjectContext = managedObjectContext else { return }
let userExercise = UserExercise(context: managedObjectContext)
let request: NSFetchRequest<UserExercise> = UserExercise.fetchRequest()
request.predicate = NSPredicate(format: "usersroutine == %@", self.routineName)
do {
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let context = appDelegate.persistentContainer.viewContext
let exercises: [NSManagedObject]?
do {
let queryResults = try context.fetch(request)
print(queryResults)
for exercise in queryResults as [NSManagedObject] {
print("Exercise NAME: \(exercise.value(forKey: "name"))")
}
completion(exercises, nil)
} catch {
print("Error with request: \(error)")
completion(exercises, error)
}
}
}
我嘗試過這些並用屏幕截圖更新OP,我只是有大量的錯誤?對不起,如果我做了一個愚蠢的錯誤,即時編寫這些funcs的新手 – infernouk
對不起,你有第一個錯誤是由於Swift 2和Swift 3之間的差異。你可以在參數名稱之前加上「_」或刪除這個論點,讓我們只是這個類型。 關於第二個問題,您需要將您想要的數據傳遞給您的關閉。您還需要將閉包傳遞給getExcercise方法。我正在用一個例子編輯答案。 – fray88
謝謝,我很困惑作爲一個獲取將返回實體結果對象而不是數組的字符串?也許我誤解了 – infernouk