繁体   English   中英

stringWithContentsOfFile无法转换我的文件,我也不知道为什么

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM