Проблема с получением данных Swift 3 Core

Функция ниже используется для получения данных для просмотра таблицы.

func fetchProfiles() -> Array<User> {
    var users: Array<User> = []
    let fetchRequest: NSFetchRequest<Profile> = Profile.fetchRequest()
    let fetchedData = try! context.fetch(fetchRequest)
    if (!fetchedData.isEmpty) {
        print(fetchedData)
        for i in 0...fetchedData.count {
            var user: User = User()
            user.userName = fetchedData[i].profileName
            user.userSurname = fetchedData[i].profileSurname
            user.userPhoto = fetchedData[i].profilePhoto
            users.append(user)
        }
        return users
    }
    else {
        return users
    }
}

«Пользователь» — это простая структура. «Профиль» — это сущность в Core Data. Я создаю массив структур, чтобы использовать их для ячеек в таблице. В коде нет ошибок (для xCode). Когда нет извлеченных данных, он пропускает добавление массива, но когда есть какая-то информация, приложение вылетает с ошибкой:

фатальная ошибка: элемент NSArray не соответствует типу элемента Swift Array


person Community    schedule 23.06.2016    source источник
comment
Попробуйте заменить эту строку в запросе на выборку, let fetchedData = try! context.executeFetchRequest(fetchRequest) как! [Любой объект]   -  person Suresh Kumar Durairaj    schedule 23.06.2016
comment
@Suresh xCode говорит: Не удается преобразовать значение типа NSFetchRequest‹Profile› в ожидаемый NSFetchRequest‹NSFetchRequestResult›   -  person    schedule 23.06.2016
comment
Замените ваш let fetchRequest: NSFetchRequest‹Profile› = Profile.fetchRequest(); строка с let fetchRequest: NSFetchRequest = NSFetchRequest(entityName:Profile) здесь Profile должно быть именем вашего объекта, убедитесь, что вы передаете его как строку   -  person Suresh Kumar Durairaj    schedule 23.06.2016
comment
@Suresh Я пробовал это раньше, и он показывает ошибку: Невозможно преобразовать значение типа NSFetchRequest‹› в указанный тип NSFetchRequest. Таким образом, моя функция, написанная выше, является единственной, которая не показывает никаких ошибок. Но он терпит крах. Может быть, это что-то с типами   -  person    schedule 23.06.2016
comment
Хорошо, оставьте свой старый фрагмент как есть, поставьте точку останова на if (!fetchedData.isEmpty) { этой строки, запустите приложение, когда отладчик остановится на этой строке , начните печатать «fetchedData», выполнив (po fetchedData) на консоли вывода. Обратите внимание на тип fetchedData при вводе автозаполнения и поделитесь напечатанным значением fetchedData. Это дало бы некоторую подсказку.   -  person Suresh Kumar Durairaj    schedule 23.06.2016


Ответы (1)


По неизвестной причине возникли проблемы с автоматически сгенерированными заголовками сущностей Core Data. Я просто удалил все файлы из папки:

/Users/user/Library/Developer/Xcode/DerivedData/MyApp/Build/Intermediates/MyApp.build/Debug-iphonesimulator/MyApp.build/DerivedSources/CoreDataGenerated

затем очистил мой проект с помощью

команда+шифт+к

проверил мою базовую модель данных на наличие некоторых возможных проблем и перестроил весь проект. Магия.

person Community    schedule 24.06.2016