由于您将库更新为Int64,我无法再编译代码。 我一直遇到像这样的更新方法的问题:
let id = Expression<String>("id")
let categoryId = Expression<Int64>("categoryId")
let languageId = Expression<String>("languageId")
let name = Expression<String>("name")
let thumb = Expression<Blob?>("thumb")
let modificationDate = Expression<String>("modificationDate")
let isCurrent = Expression<Int64>("isCurrent")
let isLocal = Expression<Int64>("isLocal")
let needsUpdate = Expression<Int64>("needsUpdate")
let progress = Expression<Double>("progress")
let brochureToUpdate = table.filter(id == brochure.pdfId).update(isLocal <- Int64(brochure.isLocal), needsUpdate <- Int64(brochure.needsUpdate)).changes
我已将所有Expression从Expression转换为Expression,并且所有与Expression绑定的Int都是Int64。
我得到:找不到会员变更&#39; 如果我删除了更改:我找不到会员&#39;更新&#39;
答案 0 :(得分:1)
我无法看到brochure
是什么,但如果brochure.pdfId
返回String
以外的任何内容,我会得到相同的结果。
当你有一个链式表达式时,很难推断出Swift错误。解决问题的一种方法是将其分解为多个步骤:
let filter = table.filter(id == brochure.pdfId) // fails
filter.update(
isLocal <- Int64(brochure.isLocal),
needsUpdate <- Int64(brochure.needsUpdate)
).changes
这样,你会得到一个更有帮助的错误。例如,如果brochure.pdfId
返回Int
:Binary operator '==' cannot be applied to operands of type 'Expression<String>' and 'Int'
。
更改为以下内容应该允许编译:
table.filter(id == String(brochure.pdfId))
你有没有理由在任何地方切换到Int64
?您仍然可以在任何不需要64位精度的地方使用Int
。您甚至可以将类似Bool
的类型用于布尔值:
let isCurrent = Expression<Bool>("isCurrent")
let isLocal = Expression<Bool>("isLocal")
使用an extension,您甚至可以使用NSDate
:
let modificationDate = Expression<NSDate>("modificationDate")
答案 1 :(得分:1)
谢谢Stephen,
使用
while statement.step() {
.....
}
做了这个伎俩。 我可以使用Bool并且不会抱怨Int。
我确实在文档中看到了statement.step(),是一个没有文档的功能吗?
答案 2 :(得分:0)
我试过了:
let brochureToUpdate = table.filter(id == "dfdf")
brochureToUpdate.update(
isLocal <- Int64(brochure.isLocal),
needsUpdate <- Int64(brochure.needsUpdate)
).changes
我得到了声明&#39;没有名为&#39; changes&#39;
的成员如果我试试这个:
let brochureToUpdate = table.filter(id == "dfdf")
brochureToUpdate.update(
isLocal <- Int64(brochure.isLocal),
needsUpdate <- Int64(brochure.needsUpdate)
)
无法调用&#39;更新&#39;使用类型&#39;($ T9,$ T17)&#39;
的参数列表brochure.Lelbocal和uni.needsUpdate都是Int64
正如我在评论中所说的那样,如果我不使用Int64但是Int我没有得到任何编译错误,但在运行时它崩溃了:
for row in statement{
var isLocal = row[6] as Int
}