访问从Obj-C桥接的二维数组时,下标的使用不明确



这段在Xcode 7.0中完美运行的代码现在抱怨一个错误:在Xcode 7.3.1的第二行中使用了不明确的下标。

    let ar = sender.draggingPasteboard().propertyListForType("ABLinkedPeopleUIDsPboardType") as! NSArray?
    let uniqueID = ar![0][0] as! String

我知道NSArray本身现在被认为是一种糟糕的做法,但我需要做什么才能编译和运行它?

NSArray是一个一维数组,但您正试图将其用作二维数组。我看不出这是怎么编译的。

你需要立即翻译成Swift类型,这样你就可以继续在Swift中编程,而不是在一片被打开的Optionals的海洋中漂泊。

怎么样:

if let ar = sender.draggingPasteboard().propertyListForType("ABLinkedPeopleUIDsPboardType") as? [[String]] { 
    // I'm assuming you're expecting to get back a two-dimensional array of Strings, or in the Obj-C realm, an NSArray of NSArrays of NSStrings
    let uniqueID = ar[0][0]
}
else {
    print("Property List for ABLinkedetc. is not a 2D String Array!")
}

Hayden的链接是正确的一般性讨论,但如果你是将Obj C连接到Swift的新手,那么它可能很难应用于你的特定情况。

相关内容

  • 没有找到相关文章

最新更新