Core data 我的数据模型是否适合此目的?
我对使用CoreData相当陌生。我有一个类存储有关兴趣点的基本坐标信息,该类的代码是:Core data 我的数据模型是否适合此目的?,core-data,Core Data,我对使用CoreData相当陌生。我有一个类存储有关兴趣点的基本坐标信息,该类的代码是: import Foundation class StopAttributes: NSObject, NSCoding{ var latitude: Double! var longitude: Double! var state: String! func encodeWithCoder(aCoder: NSCoder) { aCoder.encodeDou
import Foundation
class StopAttributes: NSObject, NSCoding{
var latitude: Double!
var longitude: Double!
var state: String!
func encodeWithCoder(aCoder: NSCoder) {
aCoder.encodeDouble(latitude, forKey: "latitude")
aCoder.encodeDouble(longitude, forKey: "longitude")
aCoder.encodeObject(state, forKey: "state")
}
required init?(coder aDecoder: NSCoder) {
latitude = aDecoder.decodeDoubleForKey("latitude")
longitude = aDecoder.decodeDoubleForKey("longitude")
state = aDecoder.decodeObjectForKey("state") as! String
}
override init() {
super.init()
}
}
我有一个上面描述的类数组,如下所示:
var unsortedStopsData: [StopAttributes] = [StopAttributes]()
此外,我用大约3000个条目填充这个数组。我想使用CoreData保存此数组。我定义了我的数据模型,如下所示:
var unsortedStopsData: [StopAttributes] = [StopAttributes]()
最后,我为我的托管对象类创建了一个子类,并在该类中将unsortedStopsData
转换为[StopAttributes]
,以便能够保存我的StopAttributes
数组。
我的问题是,我是否正确地设计了数据模型?如果没有,你能给我一些建议吗?任何数据模型是否适合任何用途取决于你存储数据后想如何使用它。您的模型将存储数据。它是否适用于您需要如何使用数据是另一个问题 使用单个可转换属性,您可以对核心数据执行的几乎所有操作都是获取每个实例。您无法构造有用的谓词,因此无法获取数据的子集。例如,您不能查找特定区域中纬度和经度的每个实例。您不能按名称查找实例。如果这符合你的需要,那很好。但如果您的需求非常有限,那么您几乎无法从核心数据中获益
如果您确实需要获取数据的子集,那么您的核心数据实体必须至少具有用于筛选的每个值的属性。是否要查找基于纬度和经度的实例?如果是这样,那么它们应该是属性。根据我对您的解释的理解,我需要将纬度、经度和状态的属性添加到实体中,以便能够搜索StopAttributes的特定实例,而无需获取3000个值的整个数组并仔细查看,对吗?如果是这种情况,我是否需要在关系或获取的属性中定义任何内容?我的猜测是添加一些获取的属性。如果您需要使用这三个属性来过滤数据(不一定同时使用所有属性),那么是的,您需要这三个属性。你不需要关系,除非你有另一个实体以某种方式与之相关。至少根据到目前为止您对需求的描述,可能也不需要获取属性。