Как загрузить базовые исходные и уникальные данные в Core Data в Swift? - PullRequest
0 голосов
/ 31 января 2019

Я работаю над проектом и хотел бы загрузить некоторые исходные данные в Core Data.В Базовых данных есть два атрибута.Первый принадлежит части тела, а второй принадлежит его собственности.Такие, как глаза, чтобы иметь один из четырех цветов и так далее.Данные будут выглядеть следующим образом:

Голубые глаза

Коричневые глаза

Зеленые глаза

Черные глаза

Красные волосы

Волосы-брюнетки

Волосы-блондинки

Одежда-платье

Одежда-юбка

Одежда-обувь

Одежда-шляпа

Clothes Gloves

Я искал некоторые версии CSV или pList и слышал некоторые альтернативные варианты доставки sqLite, но не мог понять, как это сделать эффективно.

Я ценю любое четкое объяснение загрузки небольших исходных данных в Core Data, а также удаления любых дублирующих значений из Core Data, если таковые существуют.Заранее спасибо.

1 Ответ

0 голосов
/ 31 января 2019

Вот очень простой код, демонстрирующий один простой способ сделать это.

Вам необходимо добавить собственный атрибут идентификатора, чтобы вы могли проверить, существует ли уже элемент.Допустим, вы называете это id.Затем, когда вы запускаете свое приложение, вы проверяете каждое из ваших значений по умолчанию и, если они еще не существуют, добавляете их, например так:

// create a fetch request to get all items with id=1
let fr = NSFetchRequest<MyItem>(entityName: MyItem.entity().name!)
fr.predicate = NSPredicate(format: "id == %@", "1")
do {
    // if that request returns no results
    if (try myManagedObjectContext.fetch(fr).isEmpty == true) {
        // create the default item
        let item = NSEntityDescription.insertNewObject(forEntityName: MyItem.entity().name!, into: myManagedObjectContext) as! MyItem
        // set the id
        item.id = "1"
        // set other attributes here
    }
} catch {
    // fetching failed, handle the error
}

После добавления данных вы должны сохранить их.:

// save the context
do {
    try myManagedObjectContext.save()
} catch {
    // handle the error
}

Вы также можете использовать Core Datas Unique Constraints, но я думаю, что это решение намного проще.Надеюсь, это поможет!

...