Core data 我的数据模型是否适合此目的?

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

我对使用CoreData相当陌生。我有一个类存储有关兴趣点的基本坐标信息,该类的代码是:

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个值的整个数组并仔细查看,对吗?如果是这种情况,我是否需要在关系或获取的属性中定义任何内容?我的猜测是添加一些获取的属性。如果您需要使用这三个属性来过滤数据(不一定同时使用所有属性),那么是的,您需要这三个属性。你不需要关系,除非你有另一个实体以某种方式与之相关。至少根据到目前为止您对需求的描述,可能也不需要获取属性。