Tag: 快速

从Firebase数据库检索数据:发送给实例的无法识别的选择器

我有一个Firebase数据库,如下所示: 我没有问题保存到数据库,但是当我试图以下列方式检索数据: //Properties @IBOutlet weak var bike1LBL: UILabel! @IBOutlet weak var bike2LBL: UILabel! @IBOutlet weak var bike3LBL: UILabel! @IBOutlet weak var bike4LBL: UILabel! @IBOutlet weak var chainLBL: UILabel! @IBOutlet weak var brakeLBL: UILabel! @IBOutlet weak var locationLBL: UILabel! @IBOutlet weak var phoneLBL: UILabel! override func viewDidLoad() { super.viewDidLoad() var ref = Firebase(url:"sdfghjkl/firebaseio.com/Order/") // Retrieve new […]

静态类型语言的生命周期方法

在去年,我已经成为一名移动开发人员和功能编程爱好者。 在每一个移动领域,都有组成了生命周期方法的应用程序。 以下将以Android和Kotlin为例,但iOS和Swift也一样。 在Android中,有Activity的生命周期方法,如onCreate() 。 您也可以定义一个函数onButtonClicked() ,它将完成名称所描述的内容。 为了这个问题的目的,我们假设在onCreate()中定义了一个变量,用在按钮点击处理函数onButtonClickedPrintMessageLength() ( 通常情况下, onCreate()实际上是Activity的设置方法 )。 示例类看起来像这样: class ExampleActivity: Activity() { var savedStateMessage: String? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) savedStateMessage = "Hello World!" } fun onButtonClickedPrintMessageLength() { System.out.println(savedStateMessage?.length) } } 注意savedStateMessage作为一个String?的声明String? (可空字符串)和使用?. (空安全呼叫)。 这些都是必须的,因为编译器不能保证在onButtonClickedPrintMessageLength()之前调用onCreate() onButtonClickedPrintMessageLength() 。 作为开发者, 我们知道onCreate总是被称为 * ** 。 我的问题是如何告诉编译器有关这些方法的保证顺序,并消除空检查行为? *我想有可能new我们的ExampleActivity并直接调用onButtonClickedPrintMessageLength() ,从而避开Android框架和生命周期方法,但编译器/ JVM在发生任何有趣的事情之前可能会遇到错误。 **首先调用onCreate的保证是由Android框架提供的,这是一个外在的真相来源,将来可能会有不同的功能。 […]

如何在Swift中编写一个通用的apply()函数?

有没有什么办法可以在Swift 3中使用以下工作? let button = UIButton().apply { $0.setImage(UIImage(named: "UserLocation"), for: .normal) $0.addTarget(self, action: #selector(focusUserLocation), for: .touchUpInside) $0.translatesAutoresizingMaskIntoConstraints = false $0.backgroundColor = UIColor.black.withAlphaComponent(0.5) $0.layer.cornerRadius = 5 } apply<T>函数应该使用类型(T)->Void的闭包,运行它将self传递给它,然后简单地返回self 。 另一个选择是使用一个运算符,例如“ => ”(借用Kotlin和Xtend语言的思路)。 试图做这样的NSObject扩展: extension NSObject { func apply<T>(_ block: (T)->Void) -> T { block(self as! T) return self as! T } } 但是它需要在闭包中明确声明参数类型: let button = […]