gpt4 book ai didi

ios - Swift 类中的自定义初始化给出 'property not initialized at implicitly generated super.init call' 错误?

转载 作者:搜寻专家 更新时间:2023-10-31 08:23:39 25 4
gpt4 key购买 nike

我正在尝试创建一个简单的类用作我的 MKMapView 的注释。我正在获取要解析到这些注释对象中的数据,并认为用字典初始化注释是个好主意,并在这个模型类中而不是在 UIViewController 。不过,我似乎无法摆脱编译器错误,每当我尝试修复一个错误时,就会出现另一个错误。

当前正在获取未在隐式生成的 super.init 调用中初始化的“属性 self.coordinate”。调用 super.init() 只会产生不同的错误“Property self.coordinate not initialized at super.init call”,无论我在哪里在方法中调用 super.init()。任何帮助将非常感激!这是我的代码现在的样子。

import Foundation
import MapKit

class Student: NSObject, MKAnnotation {

var coordinate: CLLocationCoordinate2D
var title: String
var subtitle: String

init(dictionary: Dictionary<String, AnyObject>) {
if let first = dictionary["firstName"] as? String {
if let last = dictionary["lastName"] as? String {
self.coordinate = CLLocationCoordinate2DMake(dictionary["latitude"] as! Double, dictionary["longitude"] as! Double)
self.title = first + " " + last
if let mediaURL = dictionary["mediaURL"] as? String {
self.subtitle = mediaURL
}
}
}
}
}

最佳答案

在 swift 中,除非声明为可选,否则在 super.init 之前大多数变量都已初始化,在您的情况下,您有两个需要初始化的变量,因为您正在 is 语句中初始化变量,swift 不确定它是否真的会如果 if 语句失败则初始化。将您的代码更改为:

var coordinate: CLLocationCoordinate2D?
var title: String?
var subtitle: String?

如果你真的不关心这些变量是否被初始化,或者确保在 init 方法中使用某些东西来初始化它们。最后,所有变量都已初始化和/或可选,您将能够调用:super.init()

希望对你有帮助

关于ios - Swift 类中的自定义初始化给出 'property not initialized at implicitly generated super.init call' 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30470996/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com