我正在将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
}
答案 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词典。它更容易,更安全。