0

This code which ran perfectly in Xcode 7.0 now complains with a error : Ambiguous use of a subscript in Xcode 7.3.1 on the second line.

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

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

I understand that the NSArray on its own is now considered bad practice, but what do I need to do to get this to compile and run?

BaseZen
  • 8,650
  • 3
  • 35
  • 47
iphaaw
  • 6,764
  • 11
  • 58
  • 83

1 Answers1

1

NSArray is a single-dimensioned array, but you're trying to use it as a two-dimensional array. I can't see how this would ever compile.

You need to translate into Swift types immediately so you can continue programming in Swift, not go adrift in a sea of force-unwrapped Optionals.

How about:

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's link is the correct general discussion but if you're new to bridging Obj C to Swift it may be difficult to apply in your particular case.

BaseZen
  • 8,650
  • 3
  • 35
  • 47