在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?
}
任何帮助非常感谢。
答案 0 :(得分:2)
由于您正在使用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
}