Необходимо получить доступ к записям Core Data с помощью Swift.Получение атрибутов для ManagedObjects
В идеале я хочу назвать класс «Основные данные», который возвращает ManagedObject или false (объект не существует). Однако в настоящее время, когда я хочу, чтобы извлечь атрибуты на ManagedObject я получаю ошибку компилятора [NSManagedObject] не имеет элемент с именем «valueForKey»
Я знаю подобных вопросов (например, swift optional chaining with cast), но я не смог для решения этой проблемы. Нужна помощь :)
Для устранения неполадок Я пытаюсь получить доступ к атрибутам уже в классе (это будет сделано за пределами класса позже). Код ниже. Почему я получаю ошибку компилятора и как ее исправить?
Спасибо!
class CoreData{
// Fetch existing data (from Core Data)
func getData(entity: String) -> AnyObject {
// Set delegate
let appDelegate =
UIApplication.sharedApplication().delegate as AppDelegate
let managedContext = appDelegate.managedObjectContext!
// Get entity = a table (filter)
let fetchRequest = NSFetchRequest(entityName:entity)
// Create error variable
var error: NSError?
// Get record
let fetchedResults =
managedContext.executeFetchRequest(fetchRequest,
error: &error) as [NSManagedObject]?
if let results = fetchedResults {
// Data retrieved
var temp = results.valueForKey("gender") as String // <-- ERROR
println(temp)
return results
} else {
// Could not obtain data - log it
println("Could not fetch \(error), \(error!.userInfo)")
return false
}
}
}
Martin R - вы - мужчина! В настоящее время, просматривая опцию подкласса - кажется, лучше, чем лучше - спасибо за указание! Вопрос из любопытства в отношении подхода к словарю: если вы запрашиваете несколько атрибутов, а один (или несколько) не существует - будет ли сбой сбоя вместе - или привести атрибуты, которые существуют? ** Еще раз спасибо - сделал мой день - желаю вам отличных выходных! ** –
@PederWessel: Добро пожаловать! - Если 'propertiesToFetch' содержит любые свойства, которые не являются действительными свойствами объекта, запрос на выборку не будет выполнен. –
Спасибо Мартин. Наслаждайся выходными –