Core Data 更新结果值
Posted
技术标签:
【中文标题】Core Data 更新结果值【英文标题】:Core Data update result values 【发布时间】:2017-09-19 09:10:05 【问题描述】:我正在尝试在 coreData 中保存 moveRowAt 上的对象列表。我将我的数据保存在一个单例中,它的顺序很好,但是当我更新 Core Data 时,它从未保存过,而且顺序错误。
func changeKrakenPosition(source: Int, destiny: Int)
let context = appDelegate.persistentContainer.viewContext
do
var results = try context.fetch(fetchRequest)
var source = source
var destiny = destiny
var destinyItem = results[destiny]
var sourceItem = results[source]
if source < destiny
var dif = destiny - source
for i in 0...dif
if i != dif
var krakenCoreDataToMove = results[source+1]
results[source] = krakenCoreDataToMove
source += 1
else
results[source] = destinyItem
results[destiny] = sourceItem
else if destiny < source
var dif = source - destiny
for i in 0...dif
if i != dif
var krakenCoreDataToMove = results[source-1]
results[source] = krakenCoreDataToMove
source -= 1
else
results[source] = destinyItem
results[destiny] = sourceItem
else
//Moved to same position
var resultKra = results as! [Kraken]
for res in resultKra
print("name: \(res.name) age \(res.age)")
do
try context.save()
catch
//Handle Error
catch
print("Error with request: \(error)")
第一次运行良好但从未保存,我再次输入并将新的第一项移动到最后一个位置,这就是发生的情况
我认为保存 CoreData 可以解决问题,但任何帮助或解决方案都会很棒。
【问题讨论】:
【参考方案1】:我不知道你到底想做什么,但顺便说一下,你可以很容易地订购你的阵列。
struct CustomObject
let i: Int
let j: String
var array: [CustomObject] = [
CustomObject(i: 1, j: "1"),
CustomObject(i: 0, j: "0"),
CustomObject(i: 3, j: "3"),
]
let newArray = array.sorted (first, second) -> Bool in
first.i < second.i
【讨论】:
感谢您的订单解决方案,我想做的是将新结果排序保存到上下文中并保留我的数据,我不知道是否必须修改获取的结果数组或者我有做其他事情,但我无法保存到核心数据中 请检查这篇文章。 ***.com/questions/11600571/…以上是关于Core Data 更新结果值的主要内容,如果未能解决你的问题,请参考以下文章
Swift Core Data NSFetchRequest 没有结果
检查 NSFetchedResultsController / Core Data 中的现有值
两个端点结果之间的外键映射 RESTKIT Core Data