Type 'NSAttributedStringKey' (aka 'NSString') has no member 'font'

Viewed 31761

Just updated pods for xcode 9 and I'm getting the error below for Cosmos.

enter image description here

Type 'NSAttributedStringKey' (aka 'NSString') has no member 'font'

7 Answers

Note: Ensure swift language version of your project. Here is how you can see/check your swift language version.

enter image description here


You have two options as solution to your query:

  1. If your project has Swift versio 4.0
    - You should choose/download POD compatible to your project's swift language (Share me POD info and swift version, so I can provide you exact pod version version for your pod library suitable for project).

  2. If your project has swift version below 4.0
    - You need to migrate your project into Swift 4.0 (if you've not migrated it). Here is ref question and answer, how to migrate from swift (below) <4.0 to 4.0.


According to tag added by you in your question - Swift3 is your current project language version and pod 'Cosmos', '~> 12.0' is supporting swift 4.

pod 'Cosmos', '~> 12.0'

Here is list of previous release supporting Swift version below 4.0.

https://github.com/evgenyneu/Cosmos/releases

Try previous release of cosmos like:

pod 'Cosmos', '~> 11.0.3'
// or
pod 'Cosmos', '~> 11.0.1'
// or
pod 'Cosmos', '~> 11.0.0

'

 attributes: [NSFontAttributeName: label.font]

it's seem okay with swift 3.2 . i fixed with paging menu viewcontroller library.

In My case I replace This Code

[NSAttributedStringKey.font : font]

by Code Below

.size(attributes: [NSFontAttributeName : font])

Hope it Helps.

You must need to update swift version to 4.0 from Xcode.

Use below step

1) Choose Your Project from project manager (left top from Xcode)
2) Choose Build Settings
3) Search "Swift language"
4) Change "Swift Language Version " => Swift 4.0

let label = UILabel()
label.font = UIFont.preferredFont(forTextStyle: .subheadline)
let percentOff = NSMutableAttributedString(string: "\(productOff ?? "0")%OFF", 
attributes: [NSFontAttributeName: UIFont(name: "Montserrat-Regular", 
size: 13)!,NSForegroundColorAttributeName: UIColor.black,
 NSBackgroundColorAttributeName: UIColor.black])
    lblPriceDetail.attributedText = percentOff

This worked for me in swift 4.2

Related