如何从此Core Data函数中检索特定值?

时间:2017-04-10 17:43:52

标签: swift core-data

我正在尝试将以下数据链接在一起:

    for member in self.markersArray {
        var coordinate = NSEntityDescription.insertNewObject(forEntityName: "Coordinate", into: managedObjectContext)
        coordinate.setValue(member.latitude, forKey: "latitude")
        coordinate.setValue(member.longitude, forKey: "longitude")
        coordinate.setValue(mapName, forKey: "name")
    }

以便稍后我可以通过mapName引用这个纬度和经度值数组。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

通过为获取请求指定谓词,您可以确保获取请求返回仅包含具有给定mapName的Coordinate对象的数组,例如

fetchRequest.predicate = NSPredicate(format:"name == %@", yourMapName)

但是,对于每个坐标,多次存储相同的地图名称效率很低(特别是如果您随后想要更改地图名称 - 您必须更新所有相关的坐标对象)。另一种方法是将另一个实体(例如Map)添加到Coordinate实体,该实体具有一个属性(mapName)和一个多对多关系(coordinates)。然后,您的坐标实体将不需要name属性,而是与map实体(Map和{{1}建立一对一的关系(coordinates)关系是相互反转的)。 To"链接在一起"在Coordinate对象中,您将创建一个map对象,设置其Map属性,然后为每个Coordinate对象将其分配给mapName关系:

map