ViewController.swift
'da girdim, girişimi kullanmak ve diğer sınıfımda kullanmak istediğim bir metin alanı var, Conjugate.swift
. Benim diğer sınıfta ardındanViewController'daki metin alanından giriş alma ve başka bir sınıfta kullanma
import UIKit
class MainViewController: UIViewController, UITextFieldDelegate {
@IBOutlet weak var mainTextField: UITextField!
var input: String!
override func viewDidLoad() {
super.viewDidLoad()
mainTextField.delegate = self
}
/* KEYBOARD HIDE */
func textFieldShouldReturn(textField: UITextField) -> Bool {
input = self.mainTextField.text
textField.resignFirstResponder()
return true;
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
Ve: İşte
class Conjugate {
var infinitive: String!
var isEndingAr = false
func conjugate() {
// gets verb from text field
infinitive = MainViewController().input
// checks verb ending and sets value to booleans
if (infinitive.hasSuffix("ar")) {
isEndingAr = true
}
}
}
alıyorum hata olduğunu:
Ben klavye, gizli şöyle aynı anda girdi yakalama amfatal error: unexpectedly found nil while unwrapping an Optional value
MainViewController.swift
içinde input
'un hala sıfır olduğunu biliyorum. Sadece nedenini bilmiyorum. Neyi yanlış yapıyorum?
Bu sorunumu çözdü, ancak şimdi başka bir sorunum var: MainViewController'daki eşlenik yöntemi nasıl ararım? Conjugate(). Conjugate() bir uygulama kazasında sonuçlanır. – wasimsandhu
Yine, 'Conjugate()' kısmı yalnızca yeni bir nesne oluşturur ve bu yeni nesne başlatılan hiçbir şey olmadığından, 'conjugate()' yöntemindeki kod kilitlenir. Yeni bir nesne oluşturmak yerine, 'conjugate.conjugate()' yapın. Bu, zaten başlatılmış nesneyi kullanır. Ayrıca, daha açıklayıcı isimleri kullanmayı düşünün. En iyi uygulama, nesneleri "isim" isimleriyle ve "fiil" isimleriyle adlandırmaktır. "Konjugat hem bir fiil hem de bir isim (ve bir sıfat) olduğu için, bu adlandırma çok hızlı çok kafa karıştırıcı olacak :) – Hash88