UITEXTFIELD 无?

Posted

技术标签:

【中文标题】UITEXTFIELD 无?【英文标题】:UITEXTFIELD nil? 【发布时间】:2016-05-24 10:19:06 【问题描述】:

我一直在学习 swift 并编写了一些代码来处理一个字符串,该字符串一直在工作,直到几天前我构建了一些额外的场景然后它就停止了工作。由于我的 UITEXTFIELD 返回 nil,我似乎遇到了一个错误,但无法解决它。

目前的代码只是获取一个变量并将其拆分为相关部分并显示在文本字段中,用户可以在提交前选择进行编辑。目前我只是使用一个固定变量,但后来的想法是用户将能够输入一个要处理的唯一变量。

import UIKit

class ViewController: UIViewController 


override func viewDidLoad() 
    super.viewDidLoad()
    updateUI()



override func didReceiveMemoryWarning() 
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.


@IBOutlet weak var FirstNameResponse: UITextField!
@IBOutlet weak var LastNameResponse: UITextField!
@IBOutlet weak var BookingRefrenceResponse: UITextField!
@IBOutlet weak var DepartureAirportResponse: UITextField!
@IBOutlet weak var DestinationAirportResponse: UITextField!
@IBOutlet weak var AirlineResponse: UITextField!
@IBOutlet weak var DateResponse: UITextField!
@IBAction func FakeAScan(sender: AnyObject) 
    var QRData = "M1ATILLA/KARACADAG REFNUM LGWDLMTCX2222 086Y004D0091 147>1182"


func updateUI() 
    FirstNameResponse.text = FirstName
    LastNameResponse.text = LastName
    BookingRefrenceResponse.text = BookingREF
    DepartureAirportResponse.text = Departure
    DestinationAirportResponse.text = Destination
    AirlineResponse.text = Airline
    DateResponse.text = JulianDate




extension String 
var condensedWhitespace: String 
    let components = self.componentsSeparatedByCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())
    return components.filter  !$0.isEmpty .joinWithSeparator(" ")




// remove extra spaces
var QRData = "M1TODD/ANNABEL         HYUWRA LPALGWTOM4681 086Y004D0091 147>1182  6074BTOM000000000000029754010916488701  ".condensedWhitespace

// split in to arrays based on spaces
var QRBreakup = QRData.componentsSeparatedByString(" ")

var Part1 = QRBreakup[0]
var BookingREF = QRBreakup[1] // Passenger booking refrence
var Part3 = QRBreakup[2]
var Part4 = QRBreakup[3]


// Remove Format & Leg code
var Part1startIndex = Part1.startIndex.advancedBy(2)
var NMSURNM = Part1.substringFromIndex(Part1startIndex)


// Seperate First & Last name
var NAME = NMSURNM.componentsSeparatedByString("/")
var LastName = NAME[0]
var FirstName = NAME[1]


// Seperate Departure Airport, Destination Airport, Airline & Flight number
var Part3temp = Part3 as NSString
var Departure = Part3temp.substringWithRange(NSRange(location: 0, length: 3))
var Destination = Part3temp.substringWithRange(NSRange(location: 3, length: 3))
var Airline = Part3temp.substringWithRange(NSRange(location: 6, length: 3))
var FlightNum = Part3temp.substringWithRange(NSRange(location: 9, length: 4))


// Seperate Date, Cabin, Seat
var Part4temp = Part4 as NSString
var JulianDate = Part4temp.substringWithRange(NSRange(location: 0, length: 3))
var Cabin = Part4temp.substringWithRange(NSRange(location: 3, length: 1))
var Seat = Part4temp.substringWithRange(NSRange(location: 4, length: 4))

这可能不是编写此脚本的最干净或最好的方法,但目前只是尝试进行试验,因此非常感谢任何帮助。

编辑: 感谢您迄今为止的所有评论。以下是根据我的理解和可以回答的更多信息。

错误:

在线更新UI() 线程1:EXC_BAD_INSTRUCTION(代码=EXC_l386_INVOP,子代码=0x0)

self BoardPassReader.ViewController 0x00007fbd58480770 UIKit.UIViewController UIViewController 名字响应 UITextField!无 无 姓氏响应 UITextField!无 无 BookingRefrenceResponse UITextField!无 无 DepartureAirportResponse UITextField!无 无 DestinationAirportResponse UITextField!无 无 航空公司响应 UITextField!无 无 日期响应 UITextField!无 无

其他信息

@邓肯C 在寻找解决方案时,我确实阅读了有关断开的出口链接的信息。刚刚再次检查,它们都显示在每个 UITextField 的“引用插座”下已连接。 至于如何加载视图控制器,如果我理解正确,它来自情节提要。

在我介绍更多场景之前,这一切似乎都奏效了。我还将所有其他场景设置为同一个 ViewController 类。

从错误中可以看出这是因为 .text 值返回“nil”值。我想知道这是否是因为它在我的脚本中完成拆分并将值分配给“FirstName”等之前尝试设置这些。但这仍然不能解释为什么它之前可以工作。

希望额外的信息有所帮助。

【问题讨论】:

所有 IBOutlet 均已正确连接 在情节提要中检查您的插座,只需右键单击 IB 中的每个 UITextField 并检查是否存在插座连接。 不是解决方案,而是:变量和函数是用驼峰命名法写的:-P 你能发布你从控制台收到的错误吗? 请不要在变量和参数名称中使用大写字母首字母。它只是让人难以阅读。 【参考方案1】:

您的插座链接很可能已损坏。如果您在 IB 中打开故事板,选择视图控制器对象,然后显示连接检查器,它将向您显示视图控制器中定义的所有视图对象以及任何有效的出口连接。

编辑:

附:当您提出问题时,您应该发布对问题的全面、完整的描述并提供所有相关信息。在这种情况下,我们需要知道准确的错误消息,生成它的行,并且我们需要知道有关视图控制器如何加载的信息。它是从情节提要还是笔尖加载的?网点是怎么设置的?

【讨论】:

也许他连接了插座,但它们最初没有superview,所以从字面上看,插座将在 nib 加载后立即释放,因为weak 引用是不让他们活着。 @holex,如果他从 Storyboard 加载视图控制器,我认为不可能创建没有超级视图的视图。我想这可以从笔尖开始,但我们目前正在进行猜测。我们需要 OP 提供更多信息。 如果他从情节提要加载它;但不能保证,我们只是假设它是从那里加载的。 对不起,上面添加了更多信息到原始问题。

以上是关于UITEXTFIELD 无?的主要内容,如果未能解决你的问题,请参考以下文章

UITextField的UIControlEventValueChanged事件

iOS UITextField 响应键盘的return 事件

将 UITextfield 整数值发布到 Web 服务器

Swift - 文本输入框(UITextField)的用法

IOS 怎么设置UIButton UITextField 不可点击且变灰

我可以在UITextView和UITextField上面更改“复制”气泡的颜色吗? [重复]