可编辑对象或数组的Swift领域结果

可编辑对象或数组的Swift领域结果,swift,realm,Swift,Realm,好的,我知道我不能修改领域对象的结果 那么,改变数据的最佳方式是什么呢 首先,我将所有领域数据作为结果 let m = Month.getAllEntriesByDateAsc() 现在我需要遍历所有数据来修改它。(此函数用于重新计算整个表数据。) 所以我想循环遍历数据并执行如下操作: for i in m { var d = i // perform calculations like d.value = 9999 } 我想在d上做所有的修改 这些是我可以用来从领

好的,我知道我不能修改领域对象的结果

那么,改变数据的最佳方式是什么呢

首先,我将所有领域数据作为结果

let m = Month.getAllEntriesByDateAsc()
现在我需要遍历所有数据来修改它。(此函数用于重新计算整个表数据。)

所以我想循环遍历数据并执行如下操作:

for i in m {

   var d = i

   // perform calculations like
   d.value = 9999 

}
我想在d上做所有的修改

这些是我可以用来从领域数据创建新的可食用对象的某种映射吗

以前我做过这样的事情:

for i in m {

    let d = Month()
    d.value = i.value
    d.status = i.status

}
但现在有很多变数

我需要什么来将领域对象更改为模型对象

而.toArray()的内容在循环中不起作用?不知道为什么

谢谢。

扩展结果{
extension Results {
    func toArray<T>(ofType: T.Type) -> [T] {
        var array = [T]()
        for i in 0 ..< count {
            if let result = self[i] as? T {
                array.append(result)
            }
        }

        return array
    }
}
func toArray(类型:T.Type)->[T]{ 变量数组=[T]() 对于0中的i..<计数{ 如果let result=self[i]as?T{ array.append(结果) } } 返回数组 } }

我已经试过了,但在“d”上不起作用。我对“m”有这样的定义,但如果可能的话,我需要在循环中执行它?@diogenes您必须提供您尝试过的内容和错误的示例。它不会让我这样做:var d=I.toArray(Month)。我得到“类型为'Month'的值没有成员'toArray'”error@diogenes您可能不想执行此答案中显示的操作。将结果强制转换到数组会断开对象和领域之间的连接,您将不再接收有关这些对象的事件或通知。他们也可能会失去订单和其他一些东西。另外,您可以用一行代码替换所有代码
let myArray=Array(realmResults)
我试图只做一个数组,但得到错误:无法推断通用参数'Element'。初始值设定项'init(:)'要求'Month'符合'Sequence'for循环有什么问题?您可能应该将它放在
write
块中,但除此之外,它看起来非常好。无法修改领域对象的结果。这是不对的。结果包含领域对象——这些对象可以在写循环中轻松修改。此外,这不是一个计算`d.value=9999*它是一个赋值,如果d不是由realm管理的,它也可以在写循环之外修改。这个问题有点模糊,我们不知道你的领域对象是什么样子的,所以现在所有的答案都是猜测。我只是以“9999”为例。我只需要找到一种方法,将信息放入一个新的模型对象中,这样就可以修改数据,并且不受领域限制。我需要在一个循环中从结果进入一个月()。谢谢你的帮助。有没有办法用键值做一个循环(映射)?那也可以。你需要澄清这个问题!你的领域模型是什么样子的?您可以很容易地创建可以修改的领域对象的非托管副本,但同样,了解模型的外观将有助于我们了解您试图执行的操作,以便我们能够制定答案。此外,在评论中回复时,请使用@符号进行回复-这将通知我们您已回复。比如说@diogenes。