Swift 结构扩展 : 'Cannot convert return expression of type <type> to return type <type>'

标签 swift struct swift2

假设您有以下结构和协议(protocol):

struct Ticket {
    var items: [TicketItem] = []
}

struct TicketItem {
}

protocol DisplayableTicket {
    var displayedItems: [DisplayableTicketItem] { get }
}

protocol DisplayableTicketItem {}

现在,如果我像这样扩展这些结构:

extension Ticket: DisplayableTicket {
    var displayedItems: [DisplayableTicketItem] {
        return self.items
    }
}

extension TicketItem: DisplayableTicketItem {}

我在return self.items行上收到以下错误:

Cannot convert return expression of type '[TicketItem]' to return type 'DisplayableTicketItem'

如果我将 Ticket 和 TicketItem 的类型更改为 class,我不会收到错误。为什么 Ticket 结构体不能包含 TicketItem 结构体数组并按上述方式进行扩展?

最佳答案

像这样:

extension Ticket: DisplayableTicket {
    var displayedItems: [DisplayableTicketItem] {
        return self.items.map{$0 as DisplayableTicketItem}
    }
}

关于Swift 结构扩展 : 'Cannot convert return expression of type <type> to return type <type>' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33635924/

相关文章:

c# - 实际上,具有单个成员的 C# 结构是否与在结构之外使用该单个成员一样高效?

C STRUCT strcopy EASY BEGINNER PROGRAM - 无法修复编译错误

swift - 在 ScrollView 中缩放/滚动部分图像

swift - 如何使用 DateComponentsFormatter 将日期显示为 "Today"或 "Yesterday"?

swift - WatchKit 2 复杂文本仅在预览中显示

arrays - 修改结构中数组的最佳方法?

ios - React-native 桥接 Swift 单例自定义类

ios - Xcode 不允许 View 保持水平居中

xcode - 在 Swift 中将图像从 .write 恢复到文件

swift - 类型 'OSType' 不符合 Swift 2.0 中的协议(protocol) 'AnyObject'