Swift NSDictionary JSON数组到字符串转换耗时

时间:2016-11-21 13:13:49

标签: arrays json swift nsdictionary nsjsonserialization

我正在将NSDictionary转换为字符串并将其存储在SQLite数据库中,并再次从数据库中检索并使用以下两种方法(在本段下面的代码中提到)将字符串转换为NSDictionary。但它需要花费大量时间来转换两种方式{array to string&反之亦然}如果我们在一个SQLite数据库表中存储多个字典。是否有任何解决方案可以在更短的时间内将完整的NSArray或完整的NSDictionary转换为字符串,反之亦然?

    func jsonDictionary(jsonData:NSDictionary)-> String
        {
            
            var error : NSError?
            
            let jsonData = try! NSJSONSerialization.dataWithJSONObject(jsonData, options: NSJSONWritingOptions.PrettyPrinted)
            
            let jsonString = NSString(data: jsonData, encoding: NSUTF8StringEncoding)! as String

            return jsonString
            
        }
func convertStringToDictionary(text: String) -> NSDictionary {
        var json=text
        json = json.stringByReplacingOccurrencesOfString("\n", withString: "", options: NSStringCompareOptions.LiteralSearch, range: nil)
//        json = json.stringByReplacingOccurrencesOfString(" ", withString: "", options: NSStringCompareOptions.LiteralSearch, range: nil)
        print(json)
        
        var jsonDictData=NSDictionary()
        if let data = json.dataUsingEncoding(NSUTF8StringEncoding) {
            do {
                var jsonDict: NSDictionary? = try NSJSONSerialization.JSONObjectWithData(data, options: []) as? NSDictionary
                jsonDictData=jsonDict?.mutableCopy()as! NSMutableDictionary
                print(jsonDictData)
                
            }
            catch
            {
                
            }
        }
        return jsonDictData
    }

1 个答案:

答案 0 :(得分:0)

您不需要将JSON数据转换为String,并且您当然不应该自己处理JSON字符串本身。

要将字典保存为JSON,只需将字典转换为JSON 数据,然后保存数据:

let jsonData = try NSJSONSerialization.dataWithJSONObject(yourDictionary, options: [])
// save `jsonData` in your SQL

此处jsonData是您的JSON数据。这是你需要保存的。没别了。

通过将其保存为blob(一大块数据)而不是String,可以将其保存在SQL表中。

然后把它拿回来:

let jsonData = // get the blob from SQL
if let json = try? NSJSONSerialization.JSONObjectWithData(jsonData, options: []),
    let dict = json as? [String: AnyObject] 
{
    // here `dict` is your dictionary converted from JSON data
}

请参阅?无需将JSON数据转换为String或从String转换。

最后的建议:不要使用NSDictionary和NSArray。相反,使用Swift数组和Swift词典。它更容易,更安全。