2014-11-10 2 views
0

Я использую Swift для заполнения данных ядра из вызова API в моей функции viewDidLoad. Моя проблема заключается в том, что каждое посещение страницы снова вызовет эту услугу и приведет к дублированию данных.Удаление данных из таблицы Core Data перед вызовом api не работает в swift

Я попытался очистить базу данных Core Data до получения результатов API, но мой код не работает.

Итак ...

  1. очищает таблицу перед вызовом API лучший подход?
  2. Можете ли вы показать мне способ очистить данные, которые работают, образец, который я нашел, ничего не делает.

Это мой код для удаления основной БД данных:

var managedObjectContext: NSManagedObjectContext! 
let request = NSFetchRequest(entityName: "Job") 
var mylist = managedObjectContext.executeFetchRequest(request, error: nil) 
mylist?.removeAll(keepCapacity: false) 
managedObjectContext.save(nil) 

Благодаря ...

+0

Лучший способ удалить каждую запись в Core Data - это просто удалить файл базы данных и создать новый. –

+0

Это не ухудшает производительность, удаляет и воссоздает db при каждом посещении страницы? – Evonet

+0

Удаление одного файла происходит быстрее, чем удаление 10 объектов в базе данных. И вы все равно должны повторно вставить все объекты, поэтому нет никакой разницы в производительности для этой части. –

ответ

1

В настоящее время, вы только удалить их из возвращенного массива. Вам нужно удалить каждый элемент в массиве из Core Data.

... 
for item: AnyObject in mylist { 
    managedObjectContext.deleteObject(item as NSManagedObject) 
} 
managedObjectContext.save(nil) 
+0

О, я думал, это то, что сделал removeall? – Evonet

+1

'executeFetchRequest' возвращает массив объектов Entity, соответствующий запросу выборки. 'removeAll' - это метод массива, а не часть основных данных. – bbarnhart

Смежные вопросы