Похоже, вам нужно имя службы, а не имя слоя:
layerName = (layer?.featureTable as? AGSServiceFeatureTable)?.tableName
Если вы собираетесь работать с автономными рабочими процессами, или вы не уверены и хотите быть уверенными в будущемВ случае, если это происходит в дальнейшем, вы можете быть немного шире в своей области видимости (см. диаграмму иерархии классов здесь ) и использовать:
layerName = (layer?.featureTable as? AGSArcGISFeatureTable)?.tableName
Обновление: Обратите внимание, как вы упомянули в своем ответе, вам нужно убедиться, что таблица возможностей загружена, поэтому что-то вроде этого, вероятно, более уместно:
let serviceLayerTable = layer?.featureTable as? AGSServiceFeatureTable
serviceLayerTable?.load(completion: { error in
guard error == nil else {
print("Error loading table: \(error!.localizedDescription)")
return
}
if let layerName = serviceLayerTable?.tableName {
}
})
Вы можете прочитать из layerInfo
, если хотите,но свойство tableName
должно работать для вас (после загрузки таблицы:)).