2016-08-03 31 views
0

在Xcode 7.0中完美運行的代碼現在抱怨出現了一個錯誤:在第二行的Xcode 7.3.1中模糊使用下標。在訪問從Obj-C橋接的二維數組時遇到下標的模糊使用

let ar = sender.draggingPasteboard().propertyListForType("ABLinkedPeopleUIDsPboardType") as! NSArray? 

    let uniqueID = ar![0][0] as! String 

我明白,NSArray本身就被認爲是不好的做法,但是我需要做些什麼才能讓它編譯和運行?

+0

你看過[這個?](http://stackoverflow.com/questions/33642059/ambiguous-use-of-subscript-in-swift) –

回答

1

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到斯威夫特可能很難在你的具體情況提出申請。

+0

工程就像一個魅力!謝謝你的幫助。 – iphaaw