访问 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]
}这样就解决了
我在 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]
}这样就解决了