2015-09-22 3 views
4

После обновления до Xcode7 и iOS9 я получаю сообщение об ошибке «Неоднозначная ссылка на член« Int.init »в преобразовании типа в этой строке« dueDate »: Int (date.timeIntervalSince1970 * 1000),»в быстром файле Помогите мне пожалуйстаСмешанная ссылка на элемент 'Int.init'

var date: NSDate! //Declared in the beginning of file 
var updatedTask = [ 
     "description": self.descriptionTextfield.text, 
     "title": self.titleTextfield.text, 
     "priority": self.priorityTextfield.text!.uppercaseString, 
     "type": self.typeTextfield.text!.uppercaseString, 
     "dueDate": Int(date.timeIntervalSince1970 * 1000), 
     "privacy": self.privateSwitch.on ? "PRIVATE": "PUBLIC" 
    ] 
+1

Это похоже на некоторые другие части вашего кода, возможно, некоторые библиотеки, которые вы используете. Литье отлично работает для меня. – Sulthan

+0

Хорошо, проверю. – WasimSafdar

+0

Нет, это не связано с другим файлом. – WasimSafdar

ответ

0

Нужно дать компилятору больше информации о типе решить мои проблемы. Спасибо за вашу помощь.

var updatedTask : [String : Any] = 
[ 
    "description": self.descriptionTextfield.text!, // <- HERE 
    "title": self.titleTextfield.text!, // <- HERE 
    "priority": self.priorityTextfield.text!.uppercaseString, 
    "type": self.typeTextfield.text!.uppercaseString, 
    "dueDate": Int(date.timeIntervalSince1970 * 1000), 
    "privacy": self.privateSwitch.on ? "PRIVATE": "PUBLIC" 
] 
3

минимальный код воспроизводящий будет:..

var field: UITextField = UITextField() 
let dict = [ 
    "foo": Int(42), 
    "bar": field.text 
] 

проблема здесь тип UITextField.text:

Xcode6.4 :

var text: String! // default is nil 

Xcode7.0:

public var text: String? // default is nil 

Это изменилось с ImplicitlyUnwrappedOptional на Optional

Так в словаре буквальный в коде выше имеет тип

[ 
    String: Int, 
    String: Optional<String> 
] 

Тогда Optional<String> не может быть мостовой до AnyObject. Вот почему компилятор смущает.

Чтобы исправить это, вы должны заставить UnWrap .text свойства:

var updatedTask = [ 
    "description": self.descriptionTextfield.text!, // <- HERE 
    "title": self.titleTextfield.text!, // <- HERE 
    "priority": self.priorityTextfield.text!.uppercaseString, 
    "type": self.typeTextfield.text!.uppercaseString, 
    "dueDate": Int(date.timeIntervalSince1970 * 1000), 
    "privacy": self.privateSwitch.on ? "PRIVATE": "PUBLIC" 
] 
+1

BTW, странное неуместное сообщение об ошибке должно рассматриваться как ошибка. Вы должны сообщить об этом https://bugreport.apple.com – rintaro

+0

«Невозможно вызвать« init »с аргументом списка типа (String)« error at »« privacy »: self.privateSwitch.on?« PRIVATE »:« PUBLIC » " линия. Можете ли вы также сказать мне, как решить это из-за обновления, он дает ошибку с литералами String, где privateSwitch является IBOutlet. – WasimSafdar

+0

Хмм, я не могу воспроизвести эту ошибку. 'privateSwitch' является' UISwitch' правильным? – rintaro

0

Для будущих читателей есть 2 проблемы. Во-первых, вы не сообщили компилятору, какой тип данных содержит ваш словарь ([String: Any]). Во-вторых, как отметил rintaro, свойство text необязательно в вашем текстовом поле.

// Tell the compiler about your dictionary 
var updatedTask : [String : Any] = [ 
    "description": self.descriptionTextfield.text!, // Force unwrap the optional text property 
    // rest of dictionary members 
] 
Смежные вопросы