ios swift xcode

ios - NSAttributedStringKey que da un error de identificador sin resolver



swift xcode (6)

El código que está intentando usar es una nueva API agregada en iOS 11. Ya que está usando Xcode 8, no está usando iOS 11. Por lo tanto, necesita usar la API actual (no beta).

let attrs = [NSForegroundColorAttributeName: color, NSFontAttributeName: font]

Estoy siguiendo un tutorial en línea para construir una aplicación de tipo de revista para iOS. Estoy intentando usar NSAttributedStringKey pero sigo recibiendo el error que se muestra a continuación. ¿Algunas ideas?

Esta es la línea de código que está causando el error:

let attrs = [NSAttributedStringKey.foregroundColor: color, NSAttributedStringKey.font: font] as [NSAttributedStringKey : Any]


Está intentando usar una API de iOS 11 en una versión anterior a iOS 11 (probablemente iOS 10). ¡Sorprendido de que hayas encontrado un tutorial que ya usa funciones beta!

Mientras tanto, intente esto.

let attrs = [NSForegroundColorAttributeName: color, NSFontAttributeName: font]

y eso debería funcionar.


Este ejemplo solo funciona con iOS11.

import UIKit class VC: UIViewController { @IBOutlet weak var usernameTxt: UITextField! @IBOutlet weak var emailTxt: UITextField! @IBOutlet weak var passTxt: UITextField! override func viewDidLoad() { super.viewDidLoad() setupView() } func setupView() { usernameTxt.attributedPlaceholder = NSAttributedString(string: "username", attributes: [NSAttributedStringKey.foregroundColor: smackPurplePlaceholder]) emailTxt.attributedPlaceholder = NSAttributedString(string: "email", attributes: [NSAttributedStringKey.foregroundColor: smackPurplePlaceholder]) passTxt.attributedPlaceholder = NSAttributedString(string: "password", attributes: [NSAttributedStringKey.foregroundColor: smackPurplePlaceholder]) } }


Los proyectos están probablemente en diferentes versiones de Swift.

En Swift 4, NSFontAttributeName ha sido reemplazado por NSAttributedStringKey.font .

como se indica aquí NSFontAttributeName vs NSAttributedStringKey.font

Necesidad de confirmar si funcionará en versiones inferiores a ios11


Swift 4.1 y Xcode 9.3 cambian el valor de la clave atribuida.

let strName = "Hello " let string_to_color2 = "Hello" let attributedString1 = NSMutableAttributedString(string:strName) let range2 = (strName as NSString).range(of: string_to_color2) attributedString1.addAttribute(NSAttributedStringKey.foregroundColor, value: UIColor.red , range: range2) lblTest.attributedText = attributedString1

Hola será en color rojo.


Swift 4.x

// MARK: - Deal with the empty data set // Add title for empty dataset func title(forEmptyDataSet _: UIScrollView!) -> NSAttributedString! { let str = "Welcome" let attrs = [NSAttributedStringKey.font: UIFont.preferredFont(forTextStyle: UIFontTextStyle.headline)] return NSAttributedString(string: str, attributes: attrs) } // Add description/subtitle on empty dataset func description(forEmptyDataSet _: UIScrollView!) -> NSAttributedString! { let str = "Tap the button below to add your first grokkleglob." let attrs = [NSAttributedStringKey.font: UIFont.preferredFont(forTextStyle: UIFontTextStyle.body)] return NSAttributedString(string: str, attributes: attrs) } // Add your image func image(forEmptyDataSet _: UIScrollView!) -> UIImage! { return UIImage(named: "MYIMAGE") } // Add your button func buttonTitle(forEmptyDataSet _: UIScrollView!, for _: UIControlState) -> NSAttributedString! { let str = "Add Grokkleglob" let attrs = [NSAttributedStringKey.font: UIFont.preferredFont(forTextStyle: UIFontTextStyle.callout), NSAttributedStringKey.foregroundColor: UIColor.white] return NSAttributedString(string: str, attributes: attrs) } // Add action for button func emptyDataSetDidTapButton(_: UIScrollView!) { let ac = UIAlertController(title: "Button tapped!", message: nil, preferredStyle: .alert) ac.addAction(UIAlertAction(title: "Hurray", style: .default, handler: nil)) present(ac, animated: true, completion: nil) }