访问 SWIFT 中的 NSMutableArray 元素

Accessing NSMutableArray elements in SWIFT

我在 swift 中遇到 NSMutableArray 的问题,我正在使用 indoor.rs iOS idk 开发应用程序来构建室内导航应用程序,我想显示所有区域我的地图并保存其名称和点。这是我的代码:

 var allZones = [AnyObject]()
    for floor in self._currentBuilding!.floors.allValues as! [IDSFloor] {
        allZones.append(floor.zones as [AnyObject])
    }

    if let zone = allZones[index] as? IDSZone, let points = zone.points as? [IDSZonePoint] {
        points.flatMap { (point) in
            print(point.x)
            print(point.y)
        }

    }

结果是:

(
  "<IDSZone: 0x166ede70>",
  "<IDSZone: 0x166edf40>",
  "<IDSZone: 0x166edfe0>",
  "<IDSZone: 0x166ee070>",
  "<IDSZone: 0x166ee0c0>",
  "<IDSZone: 0x166ee130>",
  "<IDSZone: 0x166ee180>",
  "<IDSZone: 0x166ee1c0>",
  "<IDSZone: 0x166ee210>"
)

请问我如何检索所有区域数据。这是 link 的文档:https://indoors.readme.io/docs/zones-1

谢谢。

所以,首先我认为你可以声明你的数组:

let allZones = [IDSZone]let allZones = [AnyObject]

(如果它造成一些错误请告诉我)

然后:

allZones.appendContentsOf(floor.zones as [AnyObject]) // Swift 2
allZones.append(contentsOf: floor.zones as [AnyObject]) // Swift 3

然后您可以像这样访问数组元素:

allZones.first as? IDSZone
allZones[<your_index>] as? IDSZone
...

获得积分:

if let zone = allZones[index] as? IDSZone, let points = zone.points as? [IDSZonePoint] {
points.flatMap { (point) in
    print(point.x)
    print(point.y)
}

如果需要,您可以使用 id 作为名称。

{

for floor in _currentBuilding?.floors.allValues as! [IDSFloor] {
        allZones.addObjectsFromArray(floor.zones as [AnyObject])
    }
    let realObject = allZones as NSArray as! [IDSZone]
    for x in 0..<realObject.count {
        let realPoints = NSMutableArray()
        realPoints.addObjectsFromArray(realObject[x].points as [AnyObject])

        let zonePoints = realPoints as NSArray as! [IDSZonePoint]

}这样就解决了