그래서 내가 현재 가지고있는 것이 필수적입니다. 배열은스위프트 - NSMutableArray를 MKAnotationViews의 배열로 변환
var bars = [BarAnnotation(latitude: 42.022352, longitude: -93.650413, name: "Micky's Irish Pub", deal: "$2 Drinks 9PM-1AM"),
BarAnnotation(latitude: 42.021948, longitude: -93.650348, name: "Cy's Roost", deal: "$2 Drinks 9PM-1AM")
사용자 정의 BarAnnotation 클래스의 배열입니다. 배열의 크기는 분명히 고정되어 있습니다. JSON 파일에서 막대 데이터를로드 한 다음 배열을 작성하려고했습니다.
func retrieveData(){
var filePath = NSBundle.mainBundle().pathForResource("test", ofType: "json")
var data = NSData.dataWithContentsOfMappedFile(filePath!) as NSData
var json = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil) as NSDictionary
var test = [] as NSMutableArray
let barArray = json["bars"] as NSArray
for bar in barArray{
var name = bar["name"] as NSString
var deal = bar["deal"] as NSString
var lat = bar["lat"] as Double
var long = bar["long"] as Double
var negLong = -long
var newBar = BarAnnotation(latitude: lat, longitude: negLong, name: name, deal: deal)
test.addObject(newBar)
}
bars.arrayByAddingObjectsFromArray(test)
}
그런 다음 막대를이 "test"배열로 바 꾸었습니다. 그러나 테스트는 NSMutableArray 유형이고 bars는 크기가 고정 된 BarAnnotations의 배열입니다. 변환하려고하면 오류가 발생합니다. 나는 이것이 단지 힘든 시간을 보내고있는 간단한 수정이라고 생각한다. 누군가? 여기
는class BarAnnotation: MKPointAnnotation {
var latitude, longitude, distance: Double
var name, imageName, deal: String
var location: CLLocationCoordinate2D
var loc: CLLocation
var annotation: MKPointAnnotation
init(latitude: Double, longitude: Double, name: String, deal: String) {
self.latitude = latitude
self.longitude = longitude
self.name = name
self.imageName = "image1.jpg"
self.deal = deal
self.distance = 0
self.location = CLLocationCoordinate2D(latitude: latitude, longitude: longitude)
self.loc = CLLocation(latitude: latitude, longitude: longitude)
self.annotation = MKPointAnnotation()
annotation.setCoordinate(self.location)
annotation.title = name
annotation.subtitle = deal
}
그럼 내가 여기
for bar in bars {
var barName = bar.name.stringByReplacingOccurrencesOfString("\'", withString: "", options: NSStringCompareOptions.LiteralSearch, range: nil)
var searchString = searchBar.text.stringByReplacingOccurrencesOfString("\'", withString: "", options: NSStringCompareOptions.LiteralSearch, range: nil)
if barName.rangeOfString(searchString) != nil || barName.lowercaseString.rangeOfString(searchString.lowercaseString) != nil {
var span = MKCoordinateSpanMake(0.005, 0.005)
var region = MKCoordinateRegion(center: bar.location, span: span)
mapView.setRegion(region, animated: true)
mapView.selectAnnotation(bar.annotation, animated: true)
}
}
를 액세스하려고 내 BarAnnotation 클래스이며,이 오류
에 개체를 캐스팅하는 것입니다? – matt
바 배열을 반복 할 때 위치 인 BarAnnotation의 속성에 액세스하려고합니다. 그러나 Bar 배열은 BarAnnotations의 배열이었고 이제는 NSMutableArray이기 때문에이 속성에 액세스 할 수 없습니다. – leerob
질문에 답변하지 않았습니다. 도움을 원하니? 귀하의 코드에서 아무 위치 속성도 볼 수 없습니다. 바 배열의 모든 물건에 액세스하는 것도 보지 않습니다. 문제를 일으키는 실제 코드를 보여줍니다. 사전 준비 사항이 아니라 문제가 실제로 발생하는 실제 코드입니다! - 그리고 정확히 무엇이 문제인지를 정확히 설명하십시오. 코드가 컴파일을 거부합니까? 추락 하시겠습니까? 충돌이 발생하면 충돌 로그는 무엇입니까? – matt