我有NSMutableDictionary,这个值就像这样
{
0 = {
imageangle = "0.09630692";
imageheight = "129.0245";
imagepath = "assets-library://asset/asset.PNG?id=BD849AC4-EDF2-4E05-B5F8-F5EE34385A97&ext=PNG";
imagescalex = "85.48777";
imagescaley = "85.48777";
imagewidth = "129.0245";
mainheight = 282;
mainwidth = 316;
};
memes = {
alpha = 1;
alphaFont = 1;
blue = 1;
blueFont = 0;
green = 1;
greenFont = "0.5";
memestext = "Kishore kumar kumar ";
red = 0;
redFont = 1;
textheight = 34;
textscalex = 13;
textscaley = "30.5";
textwidth = 316;
};
}
使用此我喜欢在.json文件中导出此词典。
之后我转换为JSONSTRING:
NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dickeyjson options:NSJSONWritingPrettyPrinted error:&error];
NSString* aStr;
aStr = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
我的问题:
是否可以将其导出为 .json 并将其存储到本地存储?
答案 0 :(得分:0)
您当然可以将字符串导出到.json文件,这将是正确的错误处理方式的概述:
do {
let jsonString = "{\"what\":\"ever\"}"
let jsonFile = "file.json"
guard let docs = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.AllDomainsMask, true).first else {
throw NSError(domain: "what-no-Documents-folder??", code: 1, userInfo: nil)
}
let path = NSURL(fileURLWithPath: docs).URLByAppendingPathComponent(jsonFile)
try text.writeToURL(path, atomically: false, encoding: NSUTF8StringEncoding)
} catch {
fatalError("Writing failed!")
}
并将其读回来,
do {
let path = NSURL(fileURLWithPath: "same as for writing")
let jsonString = try NSString(contentsOfURL: path, encoding: NSUTF8StringEncoding)
}
catch {
fatalError("Reading failed!")
}
但是,您可能希望在阅读时将此JSON放回字典中,是吗?在这种情况下,没有必要转换为JSON,您应该直接使用NSDictionary's writeToURL method,使用与上面相同的轮廓;因为我不相信任何JSON可表示的对象不符合NSCoder,因此可以使用writeToFile
/ writeToURL
进行存档。
答案 1 :(得分:0)
究竟是什么问题?您使用NSJSONSerialization将字典转换为NSData。然后使用writeToFile:或writeToURL的变体将NSData写入文件:没有理由通过NSString,这只是浪费时间,内存和电池寿命。
要读取数据,请使用dataWithContentsOfFile或dataWithContentsOfURL,再使用NSJSONSerialization。如果使用映射文件,NSData甚至不使用内存;如果您的数据是多兆字节,那将非常有用。