Arrays 向核心数据中添加项后,保存到核心数据中的数组为空
我试图将一个数组保存到核心数据中,该数据是整数(作为用户的输入)。当我打印实体时,保存的数字正在打印,但数组没有打印。这是代码Arrays 向核心数据中添加项后,保存到核心数据中的数组为空,arrays,swift,core-data,Arrays,Swift,Core Data,我试图将一个数组保存到核心数据中,该数据是整数(作为用户的输入)。当我打印实体时,保存的数字正在打印,但数组没有打印。这是代码 @IBAction func logMood(_ sender: UIButton) { let delegate = UIApplication.shared.delegate as! AppDelegate let managedObjectContext = delegate.persistentContainer.viewContext let
@IBAction func logMood(_ sender: UIButton) {
let delegate = UIApplication.shared.delegate as! AppDelegate
let managedObjectContext = delegate.persistentContainer.viewContext
let num = Numbers(context: managedObjectContext)
num.numberInArray = Int16(numberEnteredInSlider)
var dataArray : [[Int: Int]] {
get { return (try? JSONDecoder().decode([[Int:Int]].self, from:
num.dataOfArray!)) ?? [] }
set { num.dataOfArray = try! JSONEncoder().encode(num.numberInArray) }
}
do {
try managedObjectContext.save()
num.dataOfArray?.append(contentsOf: [UInt8(num.numberInArray)])
print(num)
} catch let error as NSError {
print("Could not save \(error), \(error.userInfo)")
}
输出如下:
<Numbers:> (entity: Numbers; id:; data: {
dataOfArray = nil;
numberInArray = 3;
})
(实体:编号;id:;数据:{
dataOfArray=零;
numberInArray=3;
})
您不理解我在上一个问题中的建议。计算属性
dataArray
必须位于Numbers
类中,以将Int
数组映射到数据,反之亦然,因为核心数据不直接支持数组。真正的数组类型是什么[Int]
或[[Int:Int]
?如果您有一个实体而不是一个属性key:Int,value:Int
来存储数组的内容,这不是会容易得多吗?@vadian,很抱歉我没有得到它,我对iOS编程相当陌生,这是我的第一个个人项目。它是一个整数数组,将传递给另一个函数。我不确定[Int:Int]
是如何工作的,我在堆栈溢出时复制了它。另外,我目前没有数字类,它是XCDataModel中的一个实体。[[Int:Int]]
类型是您前面问题中的单例的一部分。实体是Numbers
类。很不清楚你将要完成什么。对不起,我应该说得更清楚一些。大多数情况下,我试图制作一个整数数组numberEnteredInSlider
,将该数组保存在CoreData中,并使用它制作图表。同时我也意识到我不应该使用singleton。请你给我一些建议,告诉我如何从这里开始?