2010-07-04 38 views
34

Dưới đây là các mã:Mục tiêu c kiểm tra xem trường văn bản trống

- (IBAction) charlieInputText:(id)sender { 
    //getting value from text field when entered 
    charlieInputSelf = [sender stringValue]; 

    if (charlieInputSelf != @"") { 
     //(send field if not empty 
    } 
}  

này gửi nó ngay cả khi lĩnh vực này là trống rỗng; do đó, điều này không hoạt động như tôi muốn.

Trả lời

80

Đơn giản chỉ cần kiểm tra các con số không và nếu chiều dài của độ dài văn bản lớn hơn 0 - không có sản phẩm nào

if (textField.text && textField.text.length > 0) 
{ 
    /* not empty - do something */ 
} 
else 
{ 
    /* what ever */ 
} 
+12

tôi cảm thấy như Stack đã trở thành một tài liệu tham khảo hữu ích hơn bất kỳ nền tảng chính nào về tài liệu chính thức – ChuckKelly

+2

Thực ra nếu textField là nil thì textField.text.lenght == 0. Vì vậy, bạn có thể giảm nếu: 'if (textField.text.lenght> 0)' –

+0

Cả hai điều kiện đều phụ thuộc lẫn nhau. Chỉ giữ một điều kiện. Vì vậy 0 & 0 = 0, 1 & 1 = 1 – Saranjith

6

Joshua có câu trả lời đúng trong trường hợp hẹp, nhưng nói chung, bạn không thể so sánh đối tượng chuỗi bằng cách sử dụng == hoặc! = toán tử. Bạn phải sử dụng -isEqual: hoặc -isEqualToString: Điều này là do charlieImputSelf@"" thực sự là con trỏ đến đối tượng. Mặc dù hai chuỗi ký tự có thể giống nhau nhưng chúng không cần trỏ vào cùng một vị trí trong bộ nhớ.

+3

Vì vậy, nếu bạn muốn kiểm tra xem giá trị của trường văn bản có bằng 'Boo' không, bạn phải sử dụng' if ([textField.text isEqualToString: @ "Boo"]) 'thay vì' if (textField.text == @ "Boo") ' –

+0

Có (thật khó chịu, tôi không thể chỉ nhập 'có' trong hộp văn bản này) – JeremyP

2

Đó là 'công việc' theo cách. Tuy nhiên, tôi thấy rằng người dùng chỉ có thể điền vào ô có dấu cách. Tôi tìm thấy bằng cách sử dụng biểu thức thông thường giúp (mặc dù những gì tôi sử dụng là cho các từ mà không có không gian) Tôi không thể thực sự tìm ra cách để làm cho không gian cho phép.

NSError *error = NULL; 
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[ ]" options:NSRegularExpressionCaseInsensitive error:&error]; 

if (!([[inputField stringValue]isEqualTo:regex])) { 
     NSLog(@"Found a match"); 
// Do stuff in here // 
} 
49

Chúng tôi đã có phương thức sẵn có trả lại giá trị boolean cho biết liệu đối tượng nhập văn bản có văn bản nào hay không.

// In Obj-C 
if ([textField hasText]) { 
     //* Do Something you have text 
    }else{ 
     /* what ever */ 
    } 

// In Swift 

if textField.hasText { 
    //* Do Something you have text 
}else{ 
    /* what ever */ 
} 
+12

Điều này phải đúng (được chấp nhận)) answer –

+0

Tôi không biết về hasText! – DogCoffee

+0

hãy để clientName = clientNameTF.hasText()? clientNameTF.text! : "Tên khách hàng" – DogCoffee

1

Cách efficent nhất để làm điều này là bằng cách sử dụng này

// set it into an NSString 
NSString *yourText = yourVariable.text; 

if([theText length] == 0]) 
{ 
// Your Code if it is equal to zero 
} 
else 
{ 
// of the field is not empty 

} 
1

Kiểm tra xem trường văn bản trống trong Swift

@IBOutlet weak var textField: NSTextField! 
    @IBOutlet weak var multiLineTextField: NSTextField! 

    @IBAction func textChanged(sender: AnyObject) { 
    //println("text changed! \(textField.stringValue)") 

    if textField.stringValue.isEmpty == false { 
     multiLineTextField.becomeFirstResponder() 
     multiLineTextField.editable = true 
    } else { 
     multiLineTextField.editable = false 
    } 
    } 
Các vấn đề liên quan