【发布时间】:2015-11-16 12:19:56
【问题描述】:
所以我有一个一对多的核心数据结构
extension Category {
@NSManaged var name: String?
@NSManaged var catHasExpenses: NSOrderedSet? }
extension Expenses {
@NSManaged var amount: NSNumber
@NSManaged var name: String?
@NSManaged var date: NSDate
@NSManaged var expenseHasCat: Category }
当应用程序启动时,我会插入所有类别。当我想插入一个新的费用时,它也会插入一个我不想要的新类别。我的插入代码:
func insertExpense(name: String?, amount: Double, date: NSDate, currentCat: Category) {
// Fetch current cateogory
let category: Category = self.fetchCurrentCategory(currentCat.name)!
NSLog("\(category.name)") //I know I have the correct category here
// Create new expense
let expense = NSEntityDescription.insertNewObjectForEntityForName("Expenses", inManagedObjectContext: self.managedObjectContext) as! Expenses
expense.expName = name
expense.amount = amount
expense.date = date
expense.expenseHasCat = category
do {
try self.managedObjectContext.save()
} catch {
NSLog("Error: \(error)")
}
}
func fetchCurrentCategory(selectedCat: String) -> Category? {
let fetchRequest = NSFetchRequest(entityName:"Category")
let predicate = NSPredicate(format: "name == %@", selectedCat)
fetchRequest.predicate = predicate
do{
if let fetchResults = try self.managedObjectContext.executeFetchRequest(fetchRequest) as? [Category] {
return fetchResults[0]
}
}
catch{
NSLog("Error: \(error)")
}
return nil
}
我知道每次插入新费用时都会创建一个新类别,因为我会在应用程序开始时获取并计算每个实体。
- 如何在现有类别中插入新费用?
【问题讨论】:
-
请阅读本教程:raywenderlich.com/14742/…
-
您拥有的代码没有创建任何新的类别对象,因此您遇到的问题在其他地方。你确定你在启动时正确地做“插入所有类别”,而不是在那里复制它们吗?
-
不,我很确定只有在我插入新费用时才会创建新类别。我只在 entity.count = 0 时创建类别。我正在添加两张关于我的 xcdatamodeld 的照片。