[英]stringWithContentsOfFile can't convert my file and I don't know why
我正在尝试解析一个json文件,以导入我的应用程序的Core Data中。 我正在使用Rubymotion,但这并不重要,该错误与stringWithContentsOfFile
有关。
或者更好,该错误在我的Json文件中。
我从Rails后端导出文件,然后将其加载到我的应用中...
seed_file = NSBundle.mainBundle.pathForResource('converted', ofType:'json')
json_string = String.new(NSString.stringWithContentsOfFile(seed_file))
当我尝试加载json时收到此错误
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString appendString:]: nil argument'
***
我认为与某些特殊字符有关,也许与编码有关。 我尝试切割一些json文件并加载
json_string = String.new(NSString.stringWithContentsOfFile(seed_file, encoding: NSUTF8StringEncoding))
=> "[\n {\n \"id\": 5306,\n \"quiz_type\": \"oltre\",\n \"text\": \"Su quale pubblicazione dell\\'Istituto Idrografico della Marina si possono ricavare informazioni pi√π specifiche sulle maree?\",\n \"flagged\": false,\n \"image\": {\n \"image\": {\n \"url\": \"\"\n }\n },\n \"section\": {\n \"id\": 6,\n \"name\": \"Navigazione\"\n },\n \"answers\": [\n {\n \"id\": 5185,\n \"text\": \"Sul Portolano\",\n \"correct\": false\n },\n {\n \"id\": 5186,\n \"text\": \"Sulle Effemeridi Nautiche\",\n \"correct\": false\n },\n {\n \"id\": 5187,\n \"text\": \"Sulle Tavole di marea\",\n \"correct\": true\n }\n ]\n },\n {\n \"id\": 5305,\n \"quiz_type\": \"oltre\",\n \"text\": \"Cosa indica Zo?\",\n \"flagged\": false,\n \"image\": {\n \"image\": {\n \"url\": \"\"\n }\n },\n \"section\": {\n \"id\": 6,\n \"name\": \"Navigazione\"\n },\n \"answers\": [\n {\n \"id\": 5182,\n \"text\": \"La differenza tra alta e bassa marea sizigiale\",\n \"correct\": false\n }
但是当我尝试解析字符串时,在json中收到一些char的错误:例如,我有pi√π而不是più
哪里错了?
首先,您需要从文件中获取数据。 然后,您可以获取字符串,也可以直接使用反序列化的JSON对象。
// get file handle
let seedFile = NSBundle.mainBundle().pathForResource("q", ofType:"json")
// get raw data
let data = NSData(contentsOfFile: seedFile!)
// get string from data...
let string = NSString(data: data!, encoding: NSUTF8StringEncoding)
// ...or get array of objects from data
let array = NSJSONSerialization.JSONObjectWithData(data!, options: nil, error: nil) as [AnyObject]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.