ios - 在 SWIFT 中访问 NSMutableArray 元素

标签 ios arrays swift indoor-positioning-system

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

 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>"
)

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

谢谢。

最佳答案

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

让 allZones = [IDSZone]让 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 作为名称。

关于ios - 在 SWIFT 中访问 NSMutableArray 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38951952/

相关文章:

ios - 传递CGPoint *而不是CGPoint []无效吗?

java - 在 Java 中计算数组中的相同字符串

ios - 在TextField中输入DatePicker问题

ios - 无法将类型 '[String : Any]' 的值转换为预期的参数类型 '[NSAttributedStringKey : Any]'

ios - Swift 如何从 View Controller 运行函数并更改 SKScene 中的变量?

objective-c - NSManagedObjectContext 困惑

c - 数组中内存的重新分配

ios - 自动布局多个 UITextviews 和标签 - Swift

iphone - 本地通知计划问题

ios - 在 iOS 上使用 Twilio Chat,是否可以在用户之间发送少量自定义非消息数据?