ios - 无法使用属性访问.size : from String

标签 ios swift string size swift-extensions

我有一个String扩展:

func iconName(identifier: String) -> String
{
    return self.library()[identifier]
}

我在 UIImage 扩展中执行此操作:

let icon = String.iconName("myiconname")
var iconSize = icon.size(withAttributes: someAttributes)

我收到错误:

Value of type '(String) -> String' has no member 'size'

我尝试过多种不同的方式来切换此问题,但每次都会遇到相同(或类似)的错误。

问题是它确实有成员大小。我可以毫无错误地执行此操作:

var myString = "testing"
myString.size(withAttributes: attributes)

有人知道“(String) -> String”类型的值发生了什么吗?

最佳答案

方法

size(withAttributes:)

NSString中的实例方法,而不是String

参见Docs

因此,您可以将方法的签名更改为

func iconName(identifier: String) -> NSString {....}

//

你不应该使用

let icon = String.iconName("myiconname") // here String is a generic type 

as 扩展被指定与类似的对象一起使用

let icon = "someStringValue".iconName("myiconname")

关于ios - 无法使用属性访问.size : from String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49956910/

相关文章:

ios - Sirikit 完全启动应用程序而不是在自己的滚动中显示

ios - 为什么 self.locationManager stopUpdatingLocation 不停止位置更新

ios - 体系结构 x86_64 的 undefined symbol : for libTYCommonLib. a

python - Python中的正斜杠replace()

Python:修改列表的排序顺序

ios - 无法读取数据,因为它的格式不正确。”

iOS:PrepareForSegue 不工作

ios - 如何将 Firebase 快照转换为项目数组?

swift - 在 Swift 中显示来自解析的图像

c# - 将 String.Replace 替换为 Regex.Replace