Я использую NSFetchedResultsController для получения данных из CoreData и загрузки табличного представления с четырьмя разделами. Он отлично работает, когда приложение запускается в первый раз, загружая plist в CoreData, а затем извлекает записи для настройки ячеек в 4 разделах таблицы.FetchedResultsController значения не переписывают пользовательские значения инициализации NSManagedObject
Проблема возникает, когда я перезапускаю приложение, значения инициализации из класса появляются, чтобы перезаписать значения, которые, как я думал/думал, были сохранены в основных данных. Значения, которые не инициализируются классом, успешно загружаются NSFetchedResultsController.
Например, существует значение tableSection для определения разделов таблицы. При загрузке таблицы для в первый раз, он имеет четыре раздела:
НО, если я снова запустить приложение, есть только 1 значение tableSection, предполагаемое «Мои записи» (значение по умолчанию когда пользователь впервые создает запись):
Я не уверен, но я думаю, это происходит, когда я устанавливаю ячейки ...
func configureCell(cell: UITableViewCell, indexPath: NSIndexPath)
{
let record = fetchedResultsController.objectAtIndexPath(indexPath) as! Record ...}
Похоже, что при запуске настраиваемого класса значения init присваиваются и никогда не перезаписываются значениями, которые, как я думал, были бы в файле fetchedResultsContainer. Все, что не дано значение пользовательского класса инициализации, как текст и изображения, присваиваются значения из fetchedResultsController:
class Record: NSManagedObject
{
override init(entity: NSEntityDescription, insertIntoManagedObjectContext context: NSManagedObjectContext?)
{
super.init(entity: entity, insertIntoManagedObjectContext: context)
let randomBit = String(arc4random_uniform(100))
iD = NSDate().toIDTimeDateString() + "-" + randomBit + "OtR"
believers = 0
deviceTime = NSDate()
doubters = 0
eventTimeStarted = NSDate()
eventTimeEnded = NSDate()
featureImageIndex = 0
coreLocationUsed = 0
photoTaken = 0
tableSection = "My Records"
timeRecorded = deviceTime
validationScore = 0
}
}
Как создать экземпляр «Записи» в пути, который перепишет значения инициализации с данные из файла fetchedResultsController? (если это моя проблема)
О, да, вам не рекомендуется переопределять initWithEntity: insertIntoManagedObjectContext: и описание. Если описание вызывает ошибку во время операции отладки, результаты могут быть непредсказуемыми. Обычно вы не должны переопределять методы кодирования значения ключа, такие как valueForKey: и setValue: forKeyPath :. Понял, спасибо. – DrWhat