У меня есть структура с ошибочным инициализатором, а не метод экземпляра, а инициализатор. После обновления до 1.2, когда я пытаюсь назначить свойство let
внутри инициализатора, я получаю следующую ошибку Cannot assign to 'aspectRatio' in self
. Мой код ниже:
import Foundation
public struct MediaItem
{
public let url: NSURL!
public let aspectRatio: Double
public var description: String { return (url.absoluteString ?? "no url") + " (aspect ratio = \(aspectRatio))" }
// MARK: - Private Implementation
init?(data: NSDictionary?) {
var valid = false
if let urlString = data?.valueForKeyPath(TwitterKey.MediaURL) as? NSString {
if let url = NSURL(string: urlString as String) {
self.url = url
let h = data?.valueForKeyPath(TwitterKey.Height) as? NSNumber
let w = data?.valueForKeyPath(TwitterKey.Width) as? NSNumber
if h != nil && w != nil && h?.doubleValue != 0 {
aspectRatio = w!.doubleValue / h!.doubleValue
valid = true
}
}
}
if !valid {
return nil
}
}
struct TwitterKey {
static let MediaURL = "media_url_https"
static let Width = "sizes.small.w"
static let Height = "sizes.small.h"
}
}
У меня вопрос, что мне делать, чтобы это исправить?
let
), и вы назначаете ей дважды (один раз в инициализаторе - 0, а другой раз в конструкторе) - работает ли это, если вы только назначаете ей в конструктор и присвоить 0 вelse
? - person Benjamin Gruenbaum   schedule 10.04.2015self used before all stored properties are initialized
после добавления оператора else и удаления инициализатора. - person thank_you   schedule 10.04.2015