ios - 将对象数组转换为 Swift 中的子类对象数组

标签 ios swift swift2

我有一个 EKReminder 数组,像这样:

var currentReminders: [EKReminder]? = ....

我想将此数组转换为 EKReminder 的子类数组。假设这是子类:

import Foundation
import EventKit

class NNReminder: EKReminder {
    var additionalNotes: String?
}

如何将 currentReminders 转换为 [NNReminder]?我尝试了几种方法,但都失败了。

最佳答案

假设您确定currentReminders 的所有成员实际上都是NNReminder,您可以像这样转换它们:

currentReminders = currentReminders.map { $0 as! NNReminder }

编辑:如果只有部分提醒是 NNReminder 类型,或者您不确定数组的内容,您可以使用 flatMap 删除 nil 值:

currentReminders = currentReminders.flatMap { $0 as? NNReminder }

如果你问如何转换一堆初始化为 EKReminder 的对象,你应该在 NNReminder 中编写一个自定义的 init接受一个 EKReminder,并在上面的 map 方法中使用这个 init

关于ios - 将对象数组转换为 Swift 中的子类对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38336010/

相关文章:

ios - sqlite3_prepare_v2 在 iPhone 和 iPad mini 设备上返回 OK,但在普通 iPad 设备上返回错误

ios - iPhone 应用程序在收到推送通知时崩溃

ios - 带有 UIAlertAction swift 的增量标签栏角标(Badge)?

iOS 11 自定义 UIAlertView 渲染不正常

ios - 如何在 Swift 中实现简单的 MVC 设计模式?

ios - Appium是否需要Xcode在iOS设备上运行自动化测试?

ios - 推送后自定义 titleView 更改位置并在堆栈中弹出新屏幕

ios - 如何将通知传递给 Swift 3 中观察者调用的方法

ios - 无法将焦点移至 tvOS 中的下一个 UICollectionViewCell

ios - iOS app开发,是否可以检测相机是否拍过照片?