无法在Swift for循环中更改Core Data属性

时间:2017-01-18 13:43:39

标签: ios swift for-loop core-data

在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?
}

任何帮助非常感谢。

1 个答案:

答案 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
}