我正在尝试将新值附加到通用数组。问题是附加到数组的最后一个值显示为所有数组对象的内容。我想我正在做一个可怕的非受迫性错误......有人能说出来吗?
// Playground - noun: a place where people can play
import Foundation
import CoreLocation
class UrgentCenterDetails{
var latitude:CLLocationDegrees
var longitude:CLLocationDegrees
var title:String
var subtitle:String
var isiBeaconEnabled:Bool
init(){
title = "Default"
subtitle = "Default entry"
latitude = 0.0
longitude = 0.0
isiBeaconEnabled = false
}
func setCenterDetails(latitude:CLLocationDegrees, longitude:CLLocationDegrees, title:String, subtitle:String, isiBeaconEnabled: Bool){
self.title = title
self.subtitle = subtitle
self.latitude = latitude
self.longitude = longitude
self.isiBeaconEnabled = isiBeaconEnabled
}
}
var urgentCenters:Array<UrgentCenterDetails> = []
var center:UrgentCenterDetails = UrgentCenterDetails()
var title:String
var subtitle:String
var latitude:CLLocationDegrees
var longitude:CLLocationDegrees
var iBeacon:Bool
title = "Hospital of the University of Pennsylvania"
subtitle = "UrgentCare Center 1";
latitude = 39.9532293
longitude = -75.194119
iBeacon = false
center.setCenterDetails(latitude, longitude:longitude, title:title, subtitle:subtitle, isiBeaconEnabled: iBeacon)
urgentCenters.append(center)
println("\(urgentCenters[0].title)")
title = "Drexel Hospital"
subtitle = "UrgentCare Center 2"
latitude = 39.95661270
longitude = -75.18994409
iBeacon = false
center.setCenterDetails(latitude, longitude:longitude, title:title, subtitle:subtitle, isiBeaconEnabled: iBeacon)
urgentCenters.append(center)
println("\(urgentCenters[0].title)")
println("\(urgentCenters[1].title)")
答案 0 :(得分:0)
您没有创建center
对象的第二个实例。相反,您将替换其属性(并更新其已存在于阵列中的第一个副本),然后再次添加它。
您需要添加类似
的内容center = UrgentCenterDetails()
将一次添加到数组后
答案 1 :(得分:0)
您正在添加相同的对象。如果您以后更改其值,它仍然是同一个对象。为你的第二个案件制作一个新的center = UrgentCenterDetails()
。
有点像这样:你的朋友乔治想把他的房子交给最好的彩绘之家,并请你提出建议。你告诉他他的房子看起来很漂亮,所以他去画绿色,然后叫法官来看看。然后你改变主意,决定粉红色会更好,所以他重新粉刷他的房子并再次给评委打电话。法官,忙碌的人,不能马上来,所以他们明天来,但不要注意到同一个地址,来看看他的房子两次。不出所料,他们看到两个粉红色的房子,而不是绿色和粉红色的房子。如果您希望评委看到两个房子而不是两个房子,请向他们展示两个不同的房屋。
你的数组也是这样的:有两个对同一个对象的引用,当你来看看数组时最终会出现关于Drexel的内容。