这段在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的新手,那么它可能很难应用于你的特定情况。