在 Swift(当前为 2.3)中,我有一个 NSManagedObject
,它是我通过获取请求收到的,它有一个包含在典型 Core Data
集合中的属性.我想遍历 Set 中的那些 Core Data
对象,并更改它们的属性,但我告诉我不能,因为它们是 let
常量。这是我的代码:
for mediaEntity in aMemory.mediaEntities! {
mediaEntity.remoteId = 0
}
这给出了错误 Cannot assign to property : mediaEntity is a let constant
我试图更改的核心数据属性定义如下:
extension MemoryEntity {
@NSManaged public var mediaEntities: NSSet?
}
非常感谢任何帮助。
最佳答案
由于您正在使用 NSSet,因此您至少需要对对象进行类型转换。我的示例如下所示:
entity.activities?.forEach { ($0 as? ActivityEntity)?.id = UUID().uuidString }
一个更灵活的代码是:
entity.activities?.forEach {
guard let activity = $0 as? ActivityEntity else {
return // Incorrect type. Should never happen
}
activity.id = UUID().uuidString
}
关于ios - 无法在 Swift for 循环中更改核心数据属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41721048/