Swift 无法将[Address]类型的值分配给[Address]类型的值?

Swift 无法将[Address]类型的值分配给[Address]类型的值?,swift,optional,Swift,Optional,我有一个类地址,它是一个非常简单的元数据容器。(在底部。) 我有一个Address对象数组,它不是可选的-它肯定在那里。我还有一个类,它维护这些引用的可选列表,如下所示: public class Person { public var addresses : [Address]? ... } 因此,当我有这些项目时,我使用: if let theAddresses = backgroundTask.result { person.addresses = theAddr

我有一个类
地址
,它是一个非常简单的元数据容器。(在底部。)

我有一个
Address
对象数组,它不是可选的-它肯定在那里。我还有一个类,它维护这些引用的可选列表,如下所示:

public class Person {
    public var addresses : [Address]?
    ...
}
因此,当我有这些项目时,我使用:

if let theAddresses = backgroundTask.result {
    person.addresses = theAddresses
}
这似乎相当简单-但无论出于何种原因,我在
person.addresses的赋值上有一个编译器错误:

Cannot assign a value of type '[Address]' to a value of type '[Address]?'
这似乎不合理。我可以用什么检查或实验来确定这里发生了什么

这是Xcode 6.4版本。

public class Address {
    public let streetNum: Int
    public let streetName: String
    public let city: String
    public let state: String
    public let zip: String
}
背景任务的源代码

public class BackgroundTask<T> {
    public var result: T?
}
公共类背景任务{
公共var结果:T?
}

Phew-找到了答案。这是在一次大型ish重构之后发生的,而
Address
类存在于两个不同的模块中——iOS应用程序模块和嵌入式框架

它是为嵌入式框架设计的,所以我从iOS应用程序的“编译源代码”部分删除了它,一切都很好


根据引用/返回的位置,该类似乎使用了两个不同的“版本”。

您可以发布
backgroundTask
类型的界面吗?我正试图在操场上重现这个错误。我无法使用你发布的代码重现这个错误。依我看,应该可以。您是否尝试清理产品(菜单product->clean)并重建?否则,事实上,backgroundTask的接口是什么?离题建议:如果可能的话,我将使用结构而不是类来表示
Person
Address
发布的其他代码-谢谢各位。@AntonBronnikov mmmhm.Classic。很高兴你找到了。