ios - 无法在 Swift for 循环中更改核心数据属性

标签 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?
}

非常感谢任何帮助。

最佳答案

由于您正在使用 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/

相关文章:

ios - UIScrollView 中的 UIViewControllers?

ios - 显示横幅广告 Objective-C 的问题

ios - 如何以编程方式快速获取我的应用程序和系统的内存使用情况

ios - 如何使用 KYDrawerController 使用抽屉菜单更新主视图

python - 将范围与 for/in 一起使用

Linux/Bash - 为 "find"创建循环以输出到文件

ios - 自定义具有性能问题的 UINavigationController 推送/弹出动画

ios - View 不会在 SwiftUI 的 ForEach 内部更新

swift - 编译使用多个模块的项目

javascript - 算法:如何打印字母的大形状