Вот один,Тонкое предупреждение при использовании SQLite.Swift ... Binding? в любой
import SQLite
var r:[[Any]] = []
do {
if let stmt = try local.db?.prepare(q) {
r = Array(stmt)
}
else {
print("woe in sql?")
}
}
catch { return [] }
на вызов
r = Array(stmt)
дает выражение неявно принуждать от "Binding? любому.
И в самом деле, я не знаю, как установить значение по умолчанию, чтобы избежать этого предупреждения, Силе разворачивать значение, чтобы избежать этого предупреждения, или даже Явное приведение к любой с «как любой», чтобы отключите это предупреждение. : O
Вот самодостаточным пример, который воспроизводит такое же предупреждение:
struct Binding {}
struct Statement : IteratorProtocol, Sequence {
func next() -> [Binding?]? {
return nil
}
}
let stmt = Statement()
let r: [[Any]]
r = Array(stmt) // warning: Expression implicitly coerced from 'Binding?' to Any.
Относящиеся интересный вопрос:
почему компилятор ...
... кажется, не знает номер строки, с такими проблемами? И действительно: почему предупреждение возникает только после компиляции?
Большинство предупреждений появляются прямо в среде IDE, когда вы печатаете, перед компиляцией.
Это предупреждение, казалось бы (а) быть известны только во время компиляции и (б) компилятор не знает номер строки.
Как это сделать? Какая разница?
Можете ли вы сделать свой код самодостаточным? Существуют несколько методов 'prepare()', поэтому трудно сказать, какой из них вызывается здесь. –
Мартин, спасибо .. (a) Я действительно не знаю, что вы подразумеваете под этим самодостаточным здесь (б), к сожалению, я не могу понять, какой именно вызов heck используется именно в https://github.com /stephencelis/SQLite.swift:/ – Fattie
@ Хамиш: да, хороший момент: я полностью сторонник использования [[Binding?]]. Дело в том, что в противном случае удивительный SQLite.Swift немного задокументирован относительно возможности использования произвольных вызовов sql (это единственный способ использовать его в проекте под рукой); по какой-то причине маленький примерный код, который я нашел в ногу, понравился [[Any]]. В самом деле, я не смог найти никаких оснований для использования [[Any]], поэтому мы действительно изменились на [[Binding?]]. Тем не менее, вопрос, размещенный здесь, держит меня ночью. – Fattie