我正在开发一个具有类别实体的应用,该实体需要在启动时预先填充4个默认记录。
我已经看过用sqlite或csv文件捆绑我的应用程序来预加载数据,但由于它只有4条记录,所以我决定在运行时注入默认值,条件只执行一次。 / p>
我面临的问题是,使用以下代码块,我只能保留最后一条记录Drink
。我猜他们在移动到下一个setValue()
时会覆盖自己。如何确保在同一属性上保留所有记录?
do {
let result = try context.executeFetchRequest(request)
print(result.count)
if result.count == 0 {
//Pre-populate recipe categories
let entityCategory = NSEntityDescription.entityForName("RecipeCategory", inManagedObjectContext: self.managedObjectContext)
let newCategory = NSManagedObject(entity: entityCategory!, insertIntoManagedObjectContext: self.managedObjectContext)
newCategory.setValue("Main", forKey: "name")
newCategory.setValue("Side", forKey: "name")
newCategory.setValue("Dessert", forKey: "name")
newCategory.setValue("Drink", forKey: "name")
do {
try newCategory.managedObjectContext?.save()
} catch {
let saveError = error as NSError
print(saveError)
}
}
} catch {
print("Error fetching data")
}
答案 0 :(得分:3)
每次设置时都不会创建新的newCategory
。试着这样做:
let categories = ["Main", "Side", "Dessert", "Drink"]
for category in categories {
let newCategory = NSManagedObject(entity: entityCategory!, insertIntoManagedObjectContext: self.managedObjectContext)
newCategory.setValue(category, forKey: "name")
}
do {
try self.managedObjectContext.save()
} catch {
let saveError = error as NSError
print(saveError)
}