【问题标题】:How do i bind to a NSString?如何绑定到 NSString?
【发布时间】:2013-07-23 19:57:20
【问题描述】:

有人问过这个问题before,但没有得到回答。

我可以像这样绑定到对象:

[[aCellView textField] bind:@"stringValue"
                               toObject:myObject
                            withKeyPath:@"text"
                                options:nil]];

这很容易,因为我有一个myObject.text 值。 但是如何绑定到 NSString 呢?

[[aCellView textField] bind:@"stringValue"
                               toObject:aString
                            withKeyPath:@""  // What should the keyPath be?
                                options:nil]];

【问题讨论】:

  • Cocoa-touch 不支持可可绑定。您将获得的最接近的是 KVO。更多信息请看这里:stackoverflow.com/questions/3812972/…
  • 或者只使用关联对象。
  • NSString 是不可变的,绑定到一个永远不会改变的对象实际上没有意义... @H2CO3 阅读 OS X 上的绑定,这是一个定义明确的机制,它有更多与 KVO 相比,与关联对象有关(在 iOS 上不存在)。
  • 关于这个问题最好的部分是stringValue从来都不是一个有效的绑定。
  • 不,字符串本身不会改变,它会被一个对先前值一无所知的不同对象替换

标签: objective-c cocoa cocoa-bindings


【解决方案1】:

可以绑定到单个对象,但不能绑定到临时对象。我们绑定到关键路径的原因之一是对变量的生命周期以及绑定有更多的了解。将aString 设为调用对象的属性,并以aString 为键路径绑定到self

[[aCellView textField] bind:NSValueBinding toObject:self withKeyPath:@"aString" options:@{}];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-03
    • 2014-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-30
    相关资源
    最近更新 更多