我正在尝试将以下数据链接在一起:
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引用这个纬度和经度值数组。我怎么能这样做?
答案 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