【发布时间】:2019-07-29 03:54:17
【问题描述】:
我创建了一个核心数据实体(“Exstand”),它看起来像下面的 JSON 结构(相同的字段),我尝试从 JSON 文件中读取数据并写入核心数据对象数组。
我有一个本地(存储在 Xcode 中)JSON 文件,其中包含如下所示的数据:
[{
"objectid": 13003,
"lat": 40.198539203831054,
"long": 20.294164128143816,
"adresse": "1 Random Street
"zeitraum": "v. 7-20h",
"stellplatzanzahl": 3
},
{
"objectid": 13004,
"lat": 50.25018761410509,
"long": 30.44382262875748,
"adresse": "2 Random Street",
"zeitraum": "",
"stellplatzanzahl": 6
}]
我在这里阅读了许多教程和帖子,但我一生都无法让它为我工作,因为它们要么打开一个远程文件和/或不尝试存储到 Core Data 中。
这是我到目前为止的代码,当我尝试将对象附加到数组时它会崩溃。当 .append 行被注释时,我可以在控制台中看到它实际上并没有将数据写入“stand”。
class EventDetails: UIViewController, CLLocationManagerDelegate {
@IBOutlet weak var eventMap: MKMapView!
var annotation:MKAnnotation!
var Standarray: [Exstand] = []
var stand:Exstand? = nil
override func viewDidLoad() {
super.viewDidLoad()
do {
let data = NSData(contentsOf: url!)
let jsonData = try JSONDecoder().decode([Nstand].self, from: data! as Data)
for detail in jsonData {
self.stand?.adresse = detail.adresse as String
self.stand?.lat = detail.lat as Double
self.stand?.long = detail.long as Double
self.stand?.stellplatzanzahl = Int16(detail.stellplatzanzahl as Int)
self.stand?.zeitraum = detail.zeitraum as String
print(stand?.adresse)
print("adressen!")
//The line below crashes the app Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value
Standarray.append(stand!)
}
print("array!")
print(Standarray)
} catch {
print(error) // Handle Error
}
}
}
我还创建了这个结构,因为在一些教程中他们使用它而不是 Core Data 实体,所以如果这样更好,我也可以使用它。
struct NStand : Codable{
var objectid: Int
var lat: Double
var long: Double
var adresse: String
var zeitraum: String
var stellplatzanzahl: Int
}
我还有一个 XML 文件中的 JSON 数据。我不在乎从哪里读取它,我想要的只是我的应用程序实际读取和存储数据。
提前感谢您提供任何有用的建议。
【问题讨论】:
标签: arrays json swift xcode core-data