从Web服务下载后,我得到了这个字符串"85:ABC ,83:CFD"
。我需要将这些值存储到CoreData表TABLE_JOBTITLE中。我有以下代码
var designationDictionaryArray = results.componentsSeparatedByString(",")
var index: Int = 1
for item in designationDictionaryArray
{
let appDelegate =
UIApplication.sharedApplication().delegate as! AppDelegate
let managedContext = appDelegate.managedObjectContext
let entity = NSEntityDescription.entityForName("TABLE_JOBTITLE",
inManagedObjectContext:managedContext)
let job = NSManagedObject(entity: entity!,
insertIntoManagedObjectContext: managedContext)
job.setValue(String(index), forKey: "column_Id")
job.setValue(String(item.componentsSeparatedByString(":")[0]), forKey: "column_Server_Id")
job.setValue(String(item.componentsSeparatedByString(":")[1]), forKey: "column_Job_Name")
print("Column_Id")
print(index)
print("Column_Server_Id")
print(String(item.componentsSeparatedByString(":")[0]))
print("column_Job_Name")
print(String(item.componentsSeparatedByString(":")[1]))
do {
try managedContext.save()
print("saved job title")
} catch let error as NSError {
print("Could not save \(error), \(error.userInfo)")
}
self.desiginationArray.append(item.componentsSeparatedByString(":")[1])
index = index + 1
}
我可以遍历每个数据,但是当我将它存储在表中时...它会像下面一样存储
coulmn_Id column_ServerId column_Job_Title
1 83 CFD
1 83 CFD
任何人都可以帮我纠正这个奇怪行为的纠正代码或原因。
答案 0 :(得分:1)
我怀疑两件事之一:
我倾向于后者,因为我没有看到任何方式可以在一次运行中为两个实体分配相同的列ID。
将断点放在最上方以检查结果的值以及从results.componentsSeparatedByString(",")
返回的数组。
显示您用于迭代表格的代码以进行检查。我敢打赌,你没有表现出真正的输出。循环中打印线的输出是多少?如果它看起来像这样:
Column_Id
1
Column_Server_Id
85
column_Job_Name
ABC
Column_ID
2
Column_Server_ID
83
Column_ID
CFD
然后我会说,你肯定没有正确地从Core Data读回你的结果。让我们看看你在决赛桌上的位置。
答案 1 :(得分:0)
我不知道问题是同样的代码是否正常工作。