Ios 将核心数据行从一个表(实体)映射到[CLLocation]的数组?
在我的ios应用程序中,我使用的是核心数据,我需要将从JSON获得的“区域”数组保存在一个表中 “区域”对象的模型非常简单:Ios 将核心数据行从一个表(实体)映射到[CLLocation]的数组?,ios,sqlite,core-data,Ios,Sqlite,Core Data,在我的ios应用程序中,我使用的是核心数据,我需要将从JSON获得的“区域”数组保存在一个表中 “区域”对象的模型非常简单: class Region : NSObject, NSCoding { ... //MARK: - //MARK: - Properties fileprivate var id: String fileprivate var name: String fileprivate var boundaryPoints: [CLLocation] fileprivate
class Region : NSObject, NSCoding {
...
//MARK: -
//MARK: - Properties
fileprivate var id: String
fileprivate var name: String
fileprivate var boundaryPoints: [CLLocation]
fileprivate var midCoordinate: CLLocationCoordinate2D {
return getPolygonFromBoundaryPoints().coordinate
}
init(id: String, name: String, boundaryPoints: [CLLocation]) {
self.id = id
self.name = name
self.boundaryPoints = boundaryPoints
super.init()
}
//MARK: -
//MARK: - NSCoding
...
//MARK: -
//MARK: - Getters and Setters
...
}
问题是我需要将其保存在一个表中,其中的记录如下所示:
区域表:
id | title |[CLLocation]
在存储有关“区域”对象的信息时,将一行映射到(lat,lng)点阵列(在本例中为[CLLocation])的最佳解决方案是什么?因为“区域”对象模型包含一组边界点
换句话说,我应该如何使用核心数据将具有数组属性的对象模型保存到sql?(对表的结构和关系感兴趣)您需要将核心数据中的值存储为可转换的,并使用值转换器。您可以在此处找到更详细的教程:您需要将核心数据中的值存储为可转换的,并使用值转换器。您可以在此处找到包含更多详细信息的教程:您需要一个相关实体来存储CLLocation Lattude和longitude值,并在区域和位置之间使用1对多关系您需要一个相关实体来存储CLLocation Lattude和longitude值,并在区域之间使用1对多关系地点谢谢你分享。如果不使用此方法和使用上述方法,是否存在任何性能/开销问题?如果我必须在区域实体中本地存储数千条记录?请注意,我是核心数据的初学者。Paulw11所说的关系解决方案更容易调试,因为您可以使用SQLite资源管理器(如Base())查看应用程序运行之外的坐标,但我很有信心,我的解决方案会更快,因为它不必有另一个总是伴随着开销的关系。Paulw11解决方案的另一个问题是,您的模型必须具有单独的经度和纬度,通过值转换器,您可以直接使用CLLocation。这两种解决方案都有利弊,所以这取决于您!谢谢分享。如果不使用此方法和使用上述方法,是否存在任何性能/开销问题?如果我必须在区域实体中本地存储数千条记录?请注意,我是核心数据的初学者。Paulw11所说的关系解决方案更容易调试,因为您可以使用SQLite资源管理器(如Base())查看应用程序运行之外的坐标,但我很有信心,我的解决方案会更快,因为它不必有另一个总是伴随着开销的关系。Paulw11解决方案的另一个问题是,您的模型必须具有单独的经度和纬度,通过值转换器,您可以直接使用CLLocation。这两种解决方案都有利弊,所以这取决于您!