我试图:获取一些变量的值,以及运行一些存在于对象A中的函数,所有函数都来自对象B.
我已经尝试了几个小时才能使它与代理和协议一起工作。没运气。
我不能这样做:
var delegate: MyDelegate = ViewController()
因为它似乎创建了ViewController的新实例。我想要已经运行的实例中的值。
我也做不到:
var delegate: MyDelegate?
因为ViewController对象永远不会响应。所以当我调用委托时,我得到一个nil?.somefunction()
我不希望屏幕之间出现偏差。我只需要从另一个对象启动一个函数。
我敢打赌,这是一个简单的解决方案。我无法得到它。谢谢你的帮助。
我的一些代码:
class PauseButtonView: NSView{
var delegate: PauseButtonDelegate?
...
var result = delegate?.startFunction()
}
protocol PauseButtonDelegate {
func startFunction() -> String
}
class ViewController: NSViewController, PauseButtonDelegate {
func startFunction() -> String {
let myString = "Hello World!"
return myString
}
}
答案 0 :(得分:0)
如果您不希望任何一个类具有对另一个的引用,您可以使用内部通知在它们之间进行通信:
@Entity
@Table(name = "countries")
public class Country {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id ;
@Column(name = "iso_code")
private String isoCode;
public Country() {
}
public Country(String isoCode) {
this.isoCode = isoCode;
}
public Country(int id, String isoCode) {
this.id = id;
this.isoCode = isoCode;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getIsoCode() {
return isoCode;
}
public void setIsoCode(String isoCode) {
this.isoCode = isoCode;
}
@Override
public String toString() {
return "Country{" +
"id=" + id +
", isoCode='" + isoCode + '\'' +
'}';
}
}
@Entity
@Table(name = "types")
public class Type {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column(name = "type")
private String type;
@ManyToOne
@JoinColumn(name = "country_id")
private Country country;
@ManyToOne
@JoinColumn(name = "group_id")
private Group group;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public Group getGroup() {
return group;
}
public void setGroup(int priority) {
this.group = group;
}
}