gpt4 book ai didi

ios - SWIFT 中的 UIFont 扩展

转载 作者:行者123 更新时间:2023-11-28 11:20:37 25 4
gpt4 key购买 nike

我正在尝试为 Swift 编写的项目编写一个 UIFont 扩展。我收到错误“AnyObject 不可转换为字符串”。我该如何解决这个问题。这是我所做的

 func listAllFontsOnSystem(){

var familyNames = NSArray(array: UIFont.familyNames())
var fontNames = []
var indFamily, indFont : NSInteger
for (indFamily = 0 ; indFamily<familyNames.count; ++indFamily){
//Error on next line
fontNames = NSArray(array: UIFont.fontNamesForFamilyName(familyNames .objectAtIndex(indFamily)))
for indFont = 0; indFont<fontNames.count; ++indFont{
print(fontNames.objectAtIndex(indFont))
}
}
}

最佳答案

UIFont.fontNamesForFamilyName(familyNames.objectAtIndex(indFamily))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

objectAtIndex 是一个返回 id 的 Objective-C 方法,在 Swift 中返回一个 AnyObject 实例,而不是一个字符串。您可以将其“转换”为 String。

fontNames = NSArray(array: UIFont.fontNamesForFamilyName(
familyNames.objectAtIndex(indFamily) as String))

这就是更多 Swift 而更少 Objective-C 的版本的样子:

class func listAllFontsOnSystem2(){
let familyNames = UIFont.familyNames() as [String]
for familyName in familyNames {
let fontNames = UIFont.fontNamesForFamilyName(familyName) as [String]
for fontName in fontNames {
println(fontName)
}
}
}

关于ios - SWIFT 中的 UIFont 扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28474232/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com