我如何向字符串添加属性以返回两个值,字符串本身和另一个字符串(设置并获取)

时间:2019-07-12 08:51:26

标签: ios swift

如何为字符串添加属性以返回两个值,字符串本身和另一个字符串(设置并获取)? 要么 剂量字符串有一些属性返回的字符串,我可以设置一个新值?

我想要实现的目标如下:

var myString = "123"
func addFunc(s: String) -> String {
    myString.property = "resultString"
    return myString.property
}

let result = myString.addFunc(s: myString)

3 个答案:

答案 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)