arrays - 从 JSON 或 XML 文件读取并写入核心数据对象数组

标签 arrays json swift xcode core-data

我创建了一个核心数据实体(“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
}]

我在这里阅读了很多教程和帖子,但我一生都无法让它为我工作,因为它们要么打开远程文件,要么不尝试存储到核心数据中。

这是我到目前为止的代码,当我尝试将对象附加到数组时它崩溃了。当 .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
    }        
    }
}

我还创建了这个结构,因为在一些教程中他们使用它而不是核心数据实体,所以如果这是更好的,我也可以使用它。

struct NStand : Codable{    
var objectid: Int
var lat: Double
var long: Double
var adresse: String
var zeitraum: String
var stellplatzanzahl: Int
}

我还有 XML 文件中的 JSON 数据。我不在乎从哪里读取它,我想要的只是我的应用程序实际读取和存储数据。

预先感谢您提供任何有用的建议。

最佳答案

您的 json 在这里无效

"adresse": "1 Random Street

"adresse": "1 Random Street",

应该是

[{
    "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
    }
]
<小时/>
struct NStand : Codable{  // for core-data NSManagedObject
    let objectid,stellplatzanzahl: Int
    let lat,long: Double 
    let adresse,zeitraum: String 
}
<小时/>
        let str = """

[{
"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
}]


"""

        do {

            let res = try JSONDecoder().decode([NStand].self, from: Data(str.utf8))

            print(res)
        }
        catch {

            print(error)
        }

关于arrays - 从 JSON 或 XML 文件读取并写入核心数据对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55040794/

相关文章:

swift - ( cocoa 错误1570。), "NSValidationErrorKey"错误

ios - 线程 1 : EXC_BAD_INSTRUCTION (code=EXC_1386_INVOP, 子代码 = 0X0) - 错误

保存 JSON 对象的 JavaScript/Node.js 最佳实践和检索特定值的最有效方法

javascript - 是否可以将js文件中的图像动态加载到html文件中?

ios - 如何删除 Swift 左侧的 UITableView 偏移量

c# - 保护 JSON 和 ASP.NET MVC2

json - 如何创建验证 JSON 响应的 rspec 测试?

javascript - 从数组中删除所有具有特征 X 的元素,最新的除外

arrays - 如何在 Rust 0.8 中将 Zip 转换为数组?

javascript - JavaScript 数组实际上是作为数组实现的吗?