【发布时间】:2017-05-31 16:06:25
【问题描述】:
我正在用 Swift 开发一个 iOS 应用程序,它从远程 HTTP 服务器获取一些数据并在地图上显示一些功能。由于这些功能不会经常更改,我认为保留数据的本地缓存(即使在离线条件下也可以显示)并仅在后台更新它是一个好主意。 我正在使用 MapKit 显示地图,数据以 JSON 格式获取。
我想为这个本地缓存使用 Realm(如果它们更适合这种情况,请随时提出任何其他解决方案和/或方法)。
我从服务器获取的数据是 geoJSON,Feature 几何看起来像这样:
{
"type" : "Feature",
"geometry" :
{
"type" : "Polygon",
"coordinates" :
[
[
[15.7008834173655, 34.4622385876223],
[15.7453028366596, 34.4356537554745],
[15.7759359455856, 34.3953785537464],
//....
]
]
}
{
每个Area 边界多边形通常有几百个点。
我需要缓存的模型对象可能如下所示:
class Area: Object {
dynamic var name: String = ""
dynamic var description: String?
var boundary: MKPolygon! //as a MKPolygon to be drawn on map
//OR:
var boundary: [CLLocationCoordinate2D] = [] //as an array of coordinate structs
//OR:
var boundary: [[Double]] = [] //as a 2D array of coordinates (as in geoJSON)
//OR (only working solution):
var geoJSON: String = "" //store the geoJSON data directly as String
}
boundary 属性将用于在地图上将 Area 绘制为 MKPolygon。
显然,上面的示例仅存储 geoJSON 数据适用于 Realm,但我想知道 “正确的做法” 是什么。我喜欢 Realm 的易用性,但我认为将所有内容存储为 Realm 对象并不是一个好主意,因为这意味着创建大量 Point 对象只是为了绘制一个多边形。
谢谢,欢迎提出建议
【问题讨论】:
标签: json swift mapkit realm geojson