Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays Swift NSDictionary JSON数组到字符串转换耗时_Arrays_Json_Swift_Nsdictionary_Nsjsonserialization - Fatal编程技术网

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

Arrays Swift NSDictionary JSON数组到字符串转换耗时,arrays,json,swift,nsdictionary,nsjsonserialization,Arrays,Json,Swift,Nsdictionary,Nsjsonserialization,我正在将NSDictionary转换为字符串,并将其存储在SQLite数据库中,然后再次使用以下两种方法从数据库中检索并将字符串转换为NSDictionary{在本段下面的代码中提到}。但是,如果我们在一个SQLite数据库表中存储多个字典,那么将{array-to-string}转换为两种方式需要花费大量时间。是否有任何解决方案可以在更短的时间内将完整NSArray或完整NSDictionary转换为字符串,反之亦然 func jsonDictionary(jsonData:NSDic

我正在将NSDictionary转换为字符串,并将其存储在SQLite数据库中,然后再次使用以下两种方法从数据库中检索并将字符串转换为NSDictionary{在本段下面的代码中提到}。但是,如果我们在一个SQLite数据库表中存储多个字典,那么将{array-to-string}转换为两种方式需要花费大量时间。是否有任何解决方案可以在更短的时间内将完整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
    }

您不需要将JSON数据转换为字符串,当然也不应该处理JSON字符串本身

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

let jsonData = try NSJSONSerialization.dataWithJSONObject(yourDictionary, options: [])
// save `jsonData` in your SQL
这里
jsonData
是您的JSON数据。这就是你需要保存的东西。没有别的了

通过将其保存为
blob
(一块数据)而不是字符串,可以将其保存到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数据转换为字符串或从字符串转换为JSON数据


最后建议:不要使用NSDictionary和NSArray。相反,使用Swift数组和Swift字典。它更简单、更安全。

您不需要将JSON数据转换为字符串,当然也不应该处理JSON字符串本身

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

let jsonData = try NSJSONSerialization.dataWithJSONObject(yourDictionary, options: [])
// save `jsonData` in your SQL
这里
jsonData
是您的JSON数据。这就是你需要保存的东西。没有别的了

通过将其保存为
blob
(一块数据)而不是字符串,可以将其保存到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数据转换为字符串或从字符串转换为JSON数据


最后建议:不要使用NSDictionary和NSArray。相反,使用Swift数组和Swift字典。它更简单、更安全。

.stringbyreplaceingoccurrencesofstring(“\n”…
你为什么要这样做?哦,对了,你正在使用
。PrettyPrinted
…那么不要使用它!传递空选项而不是
。PrettyPrinted
//另外,你可以将JSON数据保存为blob,而不是转换为字符串或从字符串转换。谢谢Eric!我被迫使用“.stringbyreplacingoccurrencesofstring…”因为我在从NSDictionary转换为String时得到“\n…”。我也不知道您所说的“数据作为blob而不是转换为String/从String”是什么意思你认为你是被迫这么做的,但你错了。以正确的方式编码和解码,你永远不必这么做//我说的是保存JSON数据,而不是保存它的字符串表示形式。Eric,我将每个NSDictionary存储在SQLite数据库的每一行中。但在存储时,我必须将NSDictionary转换为字符串以插入到e数据库。因为SQLite数据库只接受字符串值,所以我正在将JSON数据转换为字符串。我的问题是,我有大量数据,并且被迫将每个NSDictionary或NSArray作为字符串存储在单个数据库表的每一行中。请注意,我不是swift方面的专家,但需要大量数据来管理
,因为SQLite数据库只接受s字符串值
不可以。您也可以存储数据。//我已经给出了一个答案来解释我在说什么。
.stringByReplacingOccurrencesOfString(“\n”…
你为什么要这样做?哦,对了,你正在使用
。PrettyPrinted
…那么不要使用它!传递空选项而不是
。PrettyPrinted
//另外,你可以将JSON数据保存为blob,而不是转换为字符串或从字符串转换。谢谢Eric!我被迫使用“.stringbyreplacingoccurrencesofstring…”因为我在从NSDictionary转换为String时得到“\n…”。我也不知道您所说的“数据作为blob而不是转换为String/从String”是什么意思你认为你是被迫这么做的,但你错了。以正确的方式编码和解码,你永远不必这么做//我说的是保存JSON数据,而不是保存它的字符串表示形式。Eric,我将每个NSDictionary存储在SQLite数据库的每一行中。但在存储时,我必须将NSDictionary转换为字符串以插入到e数据库。因为SQLite数据库只接受字符串值,所以我正在将JSON数据转换为字符串。我的问题是,我有大量数据,并且被迫将每个NSDictionary或NSArray作为字符串存储在单个数据库表的每一行中。请注意,我不是swift方面的专家,但需要大量数据来管理
,因为SQLite数据库只接受s字符串值
不可以。你也可以存储数据。//我已经回答了,解释了我在说什么。