Базовая ошибка запроса выборки данных - PullRequest
3 голосов
/ 25 июня 2019

У меня есть приложение, которое я создаю с использованием Core Data.У меня начальная нагрузка всех Biking структур, использующих Fetched Results Controller.Затем я пытаюсь просто отправить запрос на проверку определенной Biking структуры, используя запрос выборки, но получаю ошибку: Thread 1: EXC_BAD_ACCESS в строке предиката.Мне просто нужен этот запрос, чтобы проверить, сохранена структура со специфическим ID или нет.Я новичок во всем этом, так что прости мое невежество!Что я делаю не так?

private let appDelegate = UIApplication.shared.delegate as! AppDelegate
private let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
private var fetchedRC: NSFetchedResultsController<Biking>!

private func refresh() {
    do {
        let request = Biking.fetchRequest() as NSFetchRequest<Biking>
        if query.isEmpty {
            request.predicate = NSPredicate(format: "bikingOwner == %@", note)

            let sort = NSSortDescriptor(key: #keyPath(Biking.buttonText), ascending: true)
            request.sortDescriptors = [sort]
            do {
                fetchedRC = NSFetchedResultsController(fetchRequest: request, managedObjectContext: context, sectionNameKeyPath: nil, cacheName: nil)
                fetchedRC.delegate = self
                try fetchedRC.performFetch()
            } catch let error as NSError {
                print("Could not fetch. \(error), \(error.userInfo)")
            }
        }
    }
}

var bikingQuery = [Biking]()

var query = "test"

let fetchRequest = Biking.fetchRequest() as NSFetchRequest<Biking>
// ERROR Below
fetchRequest.predicate = NSPredicate(format: "buttonID == %@", query)
do {
    bikingQuery = try context.fetch(fetchRequest)
} catch {
    fatalError("Failed to fetch: \(error)")
}

if bikingQuery.count >= 0 {
    print("Found!")
}

1 Ответ

0 голосов
/ 25 июня 2019

Замените вашу предикатную строку

 let query = "test"
 fetchRequest.predicate = NSPredicate(format: "buttonID == %@", query)`

с

let query:Double = 2.0 // Any Value you want to search

fetchRequest.predicate = NSPredicate(format: "buttonID == %f", query)

Для получения дополнительной информации см. Эту ссылку

https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html#//apple_ref/doc/uid/TP40004265-SW1

Надеюсь, это полезно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...