嗨,我的个人项目几乎完成了,但是当我尝试用数组修改表视图时出现了问题。 这是我正在使用的功能;它使用我拥有的数据并将其分别放入注释名称,注释的坐标,然后进入表格视图,这些都包含在自定义地图标注中。
我设置它的方式是使用i值进行计数,并且与名称和坐标完全匹配,如果我将i放入项目列表的“索引”中,则可以通过将它们计数而完全做到这一点。
我的问题是我希望能够在表视图中显示多行信息,这是使用“ for _ in 0 ... 1”。但是,当我结合index = i进行此操作时,我得到了screenshot。
有人知道我将如何在每个池的表视图中获取两行信息吗?最终结果将具有正确的池名称和位置(已经完成),然后具有正确的对应地址和室内/室外描述。
我的代码在下面,我在各处搜索过的任何帮助将不胜感激,但是找不到任何不需要我重做所有事情的有用信息。
func populatePoolsList() {
let names = ["BSC Waltham", "Weston Golf Club", "BSC Wellesley", "Life Time Natick"]
let coordinates = [
CLLocationCoordinate2D(latitude: 42.400366, longitude: -71.279059),
CLLocationCoordinate2D(latitude: 42.361025, longitude: -71.287842),
CLLocationCoordinate2D(latitude: 42.348945, longitude: -71.228759),
CLLocationCoordinate2D(latitude: 42.312967, longitude: -71.394940),
]
let wishlist = ["444 Winter St, Indoor Pool", "275 Meadowbrook Rd", "Outdoor Pool", "Someplace in Wellesley", "Both Infoor and Outdoor Pools", "a place in Natick", "Either pools"]
let items = ["444 Winter St, Indoor Pool", "275 Meadowbrook Rd", "Outdoor Pool", "Someplace in Wellesley", "Both Infoor and Outdoor Pools", "a place in Natick", "Either pools"]
pools = []
for i in 0..<kPoolsWishListManagerNumberOfPools {
let name = names[i]
let avatar = UIImage(named: "outdoorpool 2")!
var wishlist = [String]()
for _ in 0...1 {
let index = i
wishlist.append(items[index])
}
let pool = Pool(name: name, avatar: avatar)
pool.wishList = wishlist
pool.location = coordinates[i]
pools.append(pool)
}
}
答案 0 :(得分:0)
您的代码令人困惑,因为您有一个常量wishlist
和一个后来的局部变量wishlist
,它们是不同的对象。
由于没有使用当前循环索引,而是使用了最外层的索引i
也许您是说在第一次迭代中使用了0和1,在第二个迭代中使用了2和3,依此类推。
let index = i * 2
wishlist = [items[index], items[index+1]]
这要求常量wishlist
至少包含kPoolsWishListManagerNumberOfPools * 2
个项目,否则将导致崩溃超出范围。
基本上,如果数据仍然是静态的,我建议扩展池初始化程序
init(name: String, avatar: UIImage, coordinate: CLLocationCoordinate2D, wishlist : [String])
并以更有效的方式填充数组
func populatePoolsList() {
pools = [Pool(name: "BSC Waltham", avatar: UIImage(named: "outdoorpool 2")!, coordinate: CLLocationCoordinate2D(latitude: 42.400366, longitude: -71.279059), wishlist : "444 Winter St, Indoor Pool", "275 Meadowbrook Rd")
Pool(name: "Weston Golf Club", avatar: UIImage(named: "outdoorpool 3")!, coordinate: CLLocationCoordinate2D(latitude: 42.361025, longitude: -71.287842), wishlist : "275 Meadowbrook Rd", "Outdoor Pool",
... ]
或将数据保存在磁盘上的JSON文件中,然后将JSON解码为Pool
实例。
答案 1 :(得分:0)
您的愿望清单值未统一分组。尝试将愿望清单更改为此:
<script src="https://maps.googleapis.com/maps/api/js"></script>
<div id="map_canvas"></div>