swiftxcodecocoamacos-sierranstextview

How to get the selected string from a NSTextView in Swift?


How to do to get the selected string from a NSTextView in Swift?

// create a range of selected text
let range = mainTextField.selectedRange()

// this works but I need a plain string not an attributed string
let str = mainTextField.textStorage?.attributedSubstring(from: range)

Maybe I have to add an intermediate step where I get the full string and then apply the range on it?


Solution

  • What about

    let str = mainTextField.text.substring(with: range)
    

    Edit:

    This should work now:

    let range = mainTextField.selectedRange()     // Returns NSRange :-/ (instead of Range)
    let str = mainTextField.string as NSString?   // So we cast String? to NSString?
    let substr = str?.substring(with: range)      // To be able to use the range in substring(with:)