如何在swift中处理resultDictionary null?

时间:2015-05-11 13:14:16

标签: swift resultset fmdb

使用FMDB结果集的resultDictionary方法为每一行返回一个字典,其中键是具有值或NSNull的列名。所以我想弄清楚如何最好地处理这些以及在哪里。

因此,随着swift的新更新,我需要更改我的代码,在这个过程中我正在考虑一些重构。

因此它代表以下代码行"" as"需要做到" as?"或者" as!" :

resultsArray.append(resultSet.resultDictionary() as Dictionary<String,AnyObject>)
罗伯特说我应该像this那样处理它们。但它让我想到了一个更好的解决方案,因此我正在寻找一些关于如何重构的建议:

  1. 我可以获得可选的,找到空值并用。替换NSNulls     空字符串文字&#34;&#34;并在某处处理空字符串     在我的应用程序中。
  2. 我可以按原样离开它们并强行打开包装。
  3. public class func queryGetAllRowsFromTableAsArrayOfHashes() -> Array<Dictionary<String,AnyObject>>? {

    var resultsArray = Array<Dictionary<String,AnyObject>>()
    let database = DBUtility.getDatabaseHandle()
    
    //Perform query and place result into a dictionary.
    self.log().info("Getting all rows from: \(self.getTableName())")
    if let resultSet = database.executeQuery(self.getAllRowsStatement()) {
        self.log().info("Query run")
        while resultSet.next() {
            //adds a dictionary of the result row to the array.
            resultsArray.append(resultSet.resultDictionary() as! Dictionary<String,AnyObject>)
        }
        self.log().info("Results array: \(resultsArray)")
        return resultsArray;
    }else{
       self.log().error("DB Error: \(database.lastErrorMessage())")
    }
    return nil;
    }
    

    任何人都应该就应该解决的问题提出一些建议吗?

1 个答案:

答案 0 :(得分:1)

你可以简单地检查一下这样的语句

if var dict = resultSet.resultDictionary() as Dictionary<String,AnyObject> 
{
  resultsArray.append(resultSet.resultDictionary() as! Dictionary<String,AnyObject>)
}

如果存在非null值,它只会在数组中附加值。 希望它会帮助你。如果值为null则if语句将不会被执行。