![](/img/trans.png)
[英]iCloud Core Data sharing between iOS and macOS apps not working
[英]Sharing code between iOS and MacOS - NSTextField and UITextField
我有一个应用程序,它在两个平台之间基本相同,共享逻辑和对象名称。 但是代码是完全不同的,我想把它放在一起。
我试图尽可能地整合逻辑以使维护更容易。 但是在 iOS 上我使用
result.text = valueString
在 MacOS 中它是
result.stringValue = valueString
有什么方法可以做我想做的事:共享代码中除用户界面定义之外的所有内容? 我看过变色龙,但它似乎没有延伸到这么远。
我将创建一个两个类都符合的协议,用作文本访问器:
protocol TextAccess {
func getText() -> String?
}
extension UITextView: TextAccess {
func getText() -> String? {
return text
}
}
extension NSTextField: TextAccess {
func getText() -> String? {
return stringValue
}
}
这样,您只需在任何类型上调用.getText()
即可调用它们的特定访问器。 您可能需要将上面的代码包装在#if
块中,但这只是解决此问题的一种方法的粗略示例。
另一种方法是创建别名:
#if os(iOS)
typealias TextField = UITextField
#endif
#if os(macOS)
typealias TextField = NSTextField
#endif
无论您在TextField
访问TextField
,您都将访问特定于平台的类。
我找到了。 真的很明显,如果你知道具体的语法是什么......
#if os(iOS)
result.text = valueString
#else
result.stringValue = valueString
#endif
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.