如何为字符串添加属性以返回两个值,字符串本身和另一个字符串(设置并获取)? 要么 剂量字符串有一些属性返回的字符串,我可以设置一个新值?
我想要实现的目标如下:
var myString = "123"
func addFunc(s: String) -> String {
myString.property = "resultString"
return myString.property
}
let result = myString.addFunc(s: myString)
答案 0 :(得分:1)
首先,要弄清楚:扩展具有附加存储属性的结构或类是不可能的。
对于类,您可以通过使用目标c运行时功能(如关联对象)来解决此问题。如果您搜索objc_setAssociatedObject
和/或objc_getAssociatedObject
对于结构(在您的情况下,String
是一个结构),这不受支持,因为它们一直在移动和复制,因此它们迟早会失去与其关联对象的关系值。
答案 1 :(得分:0)
您可以使用结构来执行所需的操作。
struct MyString {
var myString: String
var property: String
}
您可以根据需要创建一个getter和setter。
编辑:
可以对您想要的内容进行扩展,但是我强烈建议您不要这样做。在您的情况下更改String的实现不是一件好事。
最好有一个结构。
答案 2 :(得分:-1)
我不确定您正在计划什么,但是您可以尝试使用Tuple
类型的扩展变量。像这样:
extension String {
var myProperty2: (String, String) {
get {
return (self, "something you want")
} set { }
}
}
用法:
var hello = "Hello!"
hello.myProperty2 = (hello, "Hi!")
print(hello.myProperty2)