swift一个类型申明的小问题

我定一个一个变量是这样的

var siblings:Array<UnsafePointer<Person>>!

现在我想要初始化它为一个含有4个空指针的固定长度数组

siblings=[nil,nil,nil,nil]

为什么这样写会报错?

>  Nil is not compatible with expected element type
> 'UnsafePointer<Person>'
阅读 2.7k
2 个回答

1.固定长度并且默认是nil, 可以用struct实现

struct siblings
{
    var first: Person?
    var second: Person?
    var third: Person?
    var fourth: Person?
}
// 初始化后所有都为nil
var sib = siblings()
// 赋值
sib.first = Person()

2.用元组

var siblings: (Person?, Person?, Person?, Person?) = (nil, nil, nil, nil)
siblings.0 = Person()
siblings.1 = Person()

//或者
var siblings: (first: Person?, second: Person?, third: Person?, fourth: Person?) = (nil, nil, nil, nil)
siblings.first = Person()

因为数组siblings内为4个空指针,
则siblings的声明需调整,里面的元素应该是可选类型,

var siblings:Array<UnsafeMutablePointer<Person>?>
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题