我有一个名为Content的类,其URL属性可以为空(URL:String?)。 我想使用FMDB将此URL属性存储在我的sqlite数据库中,但是Xcode抱怨我需要打开可选的!
但问题是当我做content.URL!它崩溃了,因为它没有。
success = db.executeUpdate("INSERT INTO CONTENT(ID, Icon, Title, Description, URL, IsActive) VALUES(?,?,?,?,?,?,?,?,?)", withArgumentsInArray: [content.ID, content.icon, content.title, content.description, content.URL!, content.isActive])
如何在有URL且没有值的情况下成功插入URL?
谢谢!
答案 0 :(得分:0)
所以这最终为我工作,虽然看起来有点喜欢这是它必须如何:
(content.URL == nil ? NSNull() : content.URL!)
答案 1 :(得分:0)
我在这种情况下使用的一种方法是创建一个类扩展。
例如:
with data as (
select Code, substring(Code, 1, len(Code) - 1) as Prefix, Name, Total from T
)
select
case when grouping(Name) = 1 then Prefix else min(Code) end as Code,
case when grouping(Name) = 1 then '-' else Name end as Name,
sum(Total) as Total
from data
group by grouping sets ( (Prefix, Name), (Prefix) )
order by Prefix, grouping(Name), Code
然后你可以使用:
class func databaseSafeObject(object: AnyObject?) -> AnyObject {
if let safeObject: AnyObject = object{
return safeObject;
}
return NSNull();
}
获取可直接插入数据库的内容。
答案 2 :(得分:0)
对于SQLite存在Swift包装器可能更适合fmdb,它可以在Swift中运行但不使用Swift功能,例如选项(你在这里错过),类型安全和错误处理。例如,参见我的GRDB.swift http://github.com/groue/GRDB.swift,它受ccgus / fmdb的影响很大。
答案 3 :(得分:0)
在使用mydf %>%
transmute(item, pos = map(pos, ~ .x[,1] %>%
tibble(start_pos = .))) %>%
unnest(c(pos))
和AnyObject
类型的变量时,Int
类型对我不起作用,因此我创建了一个类似的函数来处理可选的Swift变量。
Double