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。很高兴你找到了。