【问题标题】:Setting NSString in one class, calling it in another class在一个类中设置 NSString,在另一个类中调用它
【发布时间】:2011-07-22 20:50:16
【问题描述】:

所以,我试图在一个类中设置NSString 的值,然后在另一个类中调用NSString 并将其加载到标签中。

我已将Class A 中的字符串声明为非原子的保留属性。在一种方法中,我设置了字符串的值。

Class B中,我导入Class A、alloc和initClass A,然后我尝试设置标签文本:

ClassA *classA = [[ClassA alloc] init];
label.text = classA.string

但是,每次我这样做时,标签都是空白的。

那么,为什么我的属性没有保留我在方法中分配的值? NSString 在 tableView didSelectRowAtIndexPath 方法中获取它的值。

谢谢!

编辑 我意识到我在输入上面的代码 sn-p 时犯了一个错误,我遗漏了对象“classA”上的属性“string”。对不起。下面的 cmets 有点不必要,但感谢您指出我的错误。作为记录,我知道对象、类和属性是如何工作的。

【问题讨论】:

  • 嗯?这没有任何意义。为什么要将类的实例分配给标签的文本属性?您的代码 sn-p 中没有字符串。
  • 您有两个不同的 ClassA 实例。每个都有自己的分配给实例变量的任何字符串的副本。因此,创建一个新的 ClassA 不会以任何方式获取存储在 ClassA 的不同实例中的字符串。但除此之外,您上面的代码是无稽之谈-您不能将非字符串(并且“classA”不是字符串)分配给标签文本。
  • (也就是说你不知道你在做什么,你需要回到学校,学习一点关于对象和类的知识。)

标签: objective-c class properties nsstring global


【解决方案1】:

如果它是一个属性,你应该可以通过说 label.text = classA.propertyName 来做到这一点(无论你如何命名你的属性。)

例如,假设您在ClassA 中创建了NSString *stringToOutput,然后在实例化Class A 之后在Class B 中声明label.text = classA.stringToOutput

希望有所帮助!

【讨论】:

  • 我的意思是,是的,这是有道理的,这就是我正在做的事情,但我仍然得到空白标签字段。所有的工作是如果我进入生成 NSStrings 的类并使用:classB.label setText:stringToOutput 由于某种原因,调用另一个类中声明的字符串将不起作用,它们返回空白。
【解决方案2】:

label.text = classA.somePropertyThatIsAString;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-13
    • 2010-12-04
    相关资源
    最近更新 更多