Nil və boşluq üçün simli yoxlayın

nil"" Swift üçün strings yoxlamaq üçün bir yol varmı? Rails-də mən yoxlamaq üçün blank() istifadə edə bilərəm.

Hal-hazırda bu var, amma lazımsız görünür:

  if stringA? != nil { if !stringA!.isEmpty { ...blah blah } } 
100
01 апр. Dekan 01 Aprel tarixində təyin olundu. 2015-04-01 05:41 '15 at 5:41 AM 2015-04-01 05:41
@ 20 cavab

İstiqamətli strings ilə məşğul olan, bu çalışır:

 (string ?? "").isEmpty 

Fusion operatoru ?? sıfır deyilsə nil sol tərəfi qaytarır, əks halda sağ tərəfi qaytarır.

Varsayılan dəyəri qaytarmaq üçün də istifadə edə bilərsiniz:

 (string ?? "").isEmpty ? "Default" : string! 
163
30 сент. Cavab jrc 30 sep verilir . 2015-09-30 16:52 '15 at 16:52 2015-09-30 16:52

Bəlkə if-let-where fəsli istifadə edə bilərsiniz:

Swift 3:

 if let string = string, !string.isEmpty {  } 
border=0

Swift 2:

 if let string = string where !string.isEmpty {  } 
69
07 авг. Cavab Ryan 07 avqustda verilir . 2015-08-07 02:40 '15 at 2:40 am 2015-08-07 02:40

Swift 2 istifadə edirsinizsə, burada isNilOrEmpty özelliğini isteğe bağlı xətləri boyunca əlavə edən həmkarımın nümunəsi:

 protocol OptionalString {} extension String: OptionalString {} extension Optional where Wrapped: OptionalString { var isNilOrEmpty: Bool { return ((self as? String) ?? "").isEmpty } } 

Sonra ən seçmə simli üçün isNilOrEmpty istifadə edə bilərsiniz.

 func testNilOrEmpty() { let nilString:String? = nil XCTAssertTrue(nilString.isNilOrEmpty) let emptyString:String? = "" XCTAssertTrue(emptyString.isNilOrEmpty) let someText:String? = "lorem" XCTAssertFalse(someText.isNilOrEmpty) } 
23
08 окт. 08 oktyabrda Ken Ko tərəfindən verilmiş cavab 2015-10-08 08:26 '15 at 8:26 am 2015-10-08 08:26

guard operatorundan istifadə

Mən qoruyanı öyrənmədən bir müddət Swift istifadə etdim. İndi böyük bir fanam. if , amma bu, erkən qayıdışa imkan verir və yalnız bütövlükdə təmiz kod üçün edir.

İşarənin nə vahid, nə də boş olduğundan əmin olmaq üçün qoruma istifadə etmək üçün aşağıdakıları edə bilərsiniz:

 let myOptionalString: String? = nil guard let myString = myOptionalString, !myString.isEmpty else { print("String is nil or empty.") return // or break, continue, throw } /// myString is neither nil nor empty (if this point is reached) print(myString) 

Bu, isteğe bağlı simli genişləndirir və dərhal boş olmadığını yoxlayır. Əgər sıfır (və ya boş) varsa, funksiyadan (və ya dövründən) dərhal qayıtsın və hamısını nəzərə almasınız. Lakin təhlükəsizlik təlimatı keçərsə, təhlükəsiz genişləndirilmiş simli istifadə edə bilərsiniz.

Həmçinin baxın

21
06 мая '16 в 10:13 2016-05-06 10:13 Cavab Suragch 06 May '16 10:13 2016-05-06 10:13 tərəfindən verilir
 var str: String? = nil if str?.isEmpty ?? true { print("str is nil or empty") } str = "" if str?.isEmpty ?? true { print("str is nil or empty") } 
10
20 сент. Cavab Sutra 20 Sentyabr. 2015-09-20 16:08 '15 'də saat 16:08 ' da

UITextField ki, bu suala çoxlu cavablar var, amma onların heç biri (mənim fikrimcə) UITextField -in istifadəsinin ən yaygın hallarından biri olan məlumatları yoxlamaq üçün UITextField :

 extension Optional where Wrapped == String { var isNilOrEmpty: Bool { return self?.trimmingCharacters(in: .whitespaces).isEmpty ?? true } } 

Yalnız istifadə edə bilərsiniz

 textField.text.isNilOrEmpty 

Boş bir boşluq kimi .trimmingCharacters(in:.whitespaces) və ya daha mürəkkəb giriş testləri üçün istifadə etsəniz, .trimmingCharacters(in:.whitespaces) bilərsiniz, məsələn

 var isValidInput: Bool { return !isNilOrEmpty  self!.trimmingCharacters(in: .whitespaces).characters.count >= MIN_CHARS } 
9
12 нояб. Sir Kodlar tərəfindən verilmiş cavab 12 Noyabr 2017-11-12 10:15 '17 saat 10:15 'da 2017-11-12 10:15

İstədiyinə simli daxil olmaq istəyirsinizsə, Ryan Cavabdan istifadə etməliyəm, amma simli domenin qeyri-boşluğuna diqqət yetirsəniz, bunun üçün mənim üçün üstünlük verən stenoqrafiya

 if stringA?.isEmpty == false { ...blah blah } 

== əlavə məntiqi dəyərlərlə yaxşı işləyir, çünki bu, orijinal niyyətini gizlətmədən oxunaqlı koddan çıxdığını düşünürəm.

Əgər əksini yoxlamaq istəyirsinizsə: əgər simli nil və ya "" deyilsə, mən düzgün niyyəti göstərmək üçün hər iki hadisəni açıq şəkildə yoxlamağı üstün edirəm:

 if stringA == nil || stringA?.isEmpty == true { ...blah blah } 
7
09 дек. Alex Pretzlav tərəfindən verilmiş cavab 09 Dek 2015-12-09 02:05 '15 at 2:05 AM 2015-12-09 02:05

Tövsiyə edirəm.

 if stringA.map(isEmpty) == false { println("blah blah") } 

map isteğe bağlı parametr varsa, funksiya dəyişikliyini .Some .
Əlavə bağlama mümkündürsə, yeni Swift 1.2 ilə oynayan sahəni çəkmək də mümkündür.

2019

7
01 апр. Cavab Qiymət Ringo 01 Apr edir. 2015-04-01 06:14 '15 at 6:14 'də 2015-04-01 06:14

Swift 3 Çözüm Opsiyonel bir genişletilmiş değeri istifadə edin və mantıksal bir değer üçün kontrol edin.

 if (string?.isempty == true) { // Perform action } 
2
10 мая '17 в 23:06 2017-05-10 23:06 cavab 10 may 17 may tarixində saat 23: 06-da Samə verilir

Əgər çox şey etməyinizi gözlədiyiniz halda öz funksiyanı yarada bilərsiniz.

 func isBlank (optionalString :String?) -> Bool { if let string = optionalString { return string.isEmpty } else { return true } } var optionalString :String? = nil if isBlank(optionalString) { println("here") } else { println("there") } 
2
01 апр. cavab verildi vol7ron 01 Apr. 2015-04-01 06:46 '15 at 06:46 2015-04-01 06:46

Boş Dizi yoxlamaq üçün Ən Yaxşı 3 Ənlik

 if !string.isEmpty{ // do stuff } 
2
21 июня '18 в 14:54 2018-06-21 14:54 Cavab Anas tərəfindən 21 İyun '18' də saat 14:54 'də 2018-06-21 14:54' də verilir

SWIFT 3

 extension Optional where Wrapped == String { /// Checks to see whether the optional string is nil or empty ("") public var isNilOrEmpty: Bool { if let text = self, !text.isEmpty { return false } return true } } 

İstədiyində bu şəkildə istifadə edin:

 if myString.isNilOrEmpty { print("Crap, how'd this happen?") } 
2
14 мая '18 в 19:18 2018-05-14 19:18 Cavab 14-14 may tarixlərində 19:18 2018-05-14 19:18 tarixində Joshua Hart tərəfindən verilmişdir

Swift 3 Dizəyin həqiqətən boş olduğunu yoxlamaq üçün yaxşı işləyir. Çünki bir boşluq olduğu zaman, Empty boş olur.

 extension String { func isEmptyAndContainsNoWhitespace() -> Bool { guard self.isEmpty, self.trimmingCharacters(in: .whitespaces).isEmpty else { return false } return true } } 

Nümunələr:

 let myString = "My String" myString.isEmptyAndContainsNoWhitespace() // returns false let myString = "" myString.isEmptyAndContainsNoWhitespace() // returns true let myString = " " myString.isEmptyAndContainsNoWhitespace() // returns false 
1
15 сент. Cavab 15 FredFlinstone tərəfindən verilir . 2017-09-15 09:29 '17 saat 09:29 'da 2017-09-15 09:29

String sinif uzantısı yaradın:

 extension String { // returns false if passed string is nil or empty static func isNilOrEmpty(_ string:String?) -> Bool { if string == nil { return true } return string!.isEmpty } }// extension: String 

Dəyər bir və ya bir neçə boşluq varsa, bu TRUE qaytaracaq. Boş bir simli "boş" olaraq müalicə etmək üçün ...

 return string!.trimmingCharacters(in: CharacterSet.whitespaces).isEmpty 

Bunun əvəzinə. Bunun üçün Fond lazımdır.

Bu şəkildə istifadə edin ...

 if String.isNilOrEmpty("hello world") == true { print("it a string!") } 
1
14 июля '17 в 18:36 2017-07-14 18:36 Cavab JustPixelz tərəfindən 14 İyul '17 'də 6:36 2017-07-14 18:36' də verilir

Bu kimi bir şey etməlisiniz:
if !(string?.isEmpty?? true) {//Not nil nor empty }

Sıfır olan ittifaq operatoru, isteğe bağlı parametrenin sıfır olub olmadığını yoxlayır, əgər sıfır deyilsə, onun əmlakını yoxlayır, bu halda boşdur. Bu isteğe bağlı dəyər nil ola bildiyindən, isteğe bağlı dəyər nil olduqda istifadə ediləcək bir u mənim dəyəri müəyyənləşdirirsiniz.

0
10 сент. Dominik Babiçin 10 sentyabrda verdiyi cavabı 2018-09-10 09:35 '18, 9:35 ; 2018-09-10 09:35

Üçüncü operatoru (şərti operator kimi tanınan, C++ forever! ) İstifadə edin:

if stringA != nil? stringA!.isEmpty == false: false {}

stringA! məcburi yerləşdirmə yalnız stringA != nil olduğunda baş verir, buna görə də təhlükəsizdir. == false şifrənin başqa bir ünlemdən daha !(stringA!.isEmpty) .

Mən şəxsən bir az fərqli formada seçim edirəm:

if stringA == nil? false: stringA!.isEmpty == false {}

Yuxarıdakı bəyanatda dərhal dərk edilir ki, dəyişən nil olduqda bütün blok məhdudlaşdırılmır.

0
16 февр. Cavab 16 fevralda Gary tərəfindən verilir. 2018-02-16 10:25 '18 saat 10:25 'da 2018-02-16 10:25

Yerli db-dən serverə və əksinə dəyərlərin köçürülməsi ilə məşğul olduğunuzda, mənim də böyük problemlərim var idi? və həmçinin! və nə deyil.

Beləliklə, mən sıfır halları idarə etmək üçün Swift3.0 yardım proqramı yaratmışam və demək olar ki, tamamilə qaça bilərəm? və həmçinin! kodda.

 func str(_ string: String?) -> String { return (string != nil ? string! : "") } 

Məsələn: -

Əvvəllər:

  let myDictionary: [String: String] = ["title": (dbObject?.title != nil ? dbObject?.title! : "")] 

Sonra:

  let myDictionary: [String: String] = ["title": str(dbObject.title)] 

və etibarlı bir dize yoxlamaq üçün lazım olduğunda,

  if !str(dbObject.title).isEmpty { //do stuff } 

Məni çox sayda əlavə etmək və silməkdən qurtardı? və həmçinin! yazı yazdıqdan sonra məntiqli bir məna verir.

0
08 февр. Cavab Nikil Mathew tərəfindən verilir 08 fevral. 2017-02-08 19:21 '17 də 7:21 'də 2017-02-08 19:21

UITextField- dən dəyərlər əldə etməknilempty simli yoxlamaq üçün faydalıdır

 @IBOutlet weak var myTextField: UITextField! 

Bir UITextField-dan bir simli alır və başqa bir şeylər edir ki, funksiyanız (bir button basdığınız zaman).

 @IBAction func getStringFrom_myTextField(_ sender: Any) { guard let string = myTextField.text, !(myTextField.text?.isEmpty)! else { return } //use "string" to do your stuff. } 

Bu nil dəyərinin yanı sıra empty nil diqqət yetirir.

Mənim üçün çox yaxşı iş gördü.

0
14 мая '18 в 23:50 2018-05-14 23:50 cavab Soropromo tərəfindən 14 may '18 saat 23:50 2018-05-14 23:50 tərəfindən verilir

Swift 4.2-də, isteğe bağlı simli heç bir dəyəri yoxdursa və ya boş olduqda dönən Boolean əmlakı ilə String tipi üçün Optional uzantı tətbiq edə bilərsiniz:

 extension Optional where Wrapped == String { var isNilOrEmpty: Bool { guard let self = self else { return true } return self.isEmpty } } 

Buna baxmayaraq, String , Collection protokoluna uyğun olaraq, isEmpty əmlakı tətbiq edir. Buna görə də universal kod məhdudiyyətini ( Wrapped == String ) genişləndirməklə ( Wrapped: Collection ) Array , DictionarySet də yeni xüsusiyyətimiz üçün isNilOrEmpty üstünlüyü isNilOrEmpty :

 extension Optional where Wrapped: Collection { var isNilOrEmpty: Bool { guard let self = self else { return true } return self.isEmpty } } 

String s ilə istifadə edin:

 let optionalString: String? = nil print(optionalString.isNilOrEmpty) // prints: true 
 let optionalString: String? = "" print(optionalString.isNilOrEmpty) // prints: true 
 let optionalString: String? = "Hello" print(optionalString.isNilOrEmpty) // prints: false 

Array s ilə istifadə edin:

 let optionalArray: Array<Int>? = nil print(optionalArray.isNilOrEmpty) // prints: true 
 let optionalArray: Array<Int>? = [] print(optionalArray.isNilOrEmpty) // prints: true 
 let optionalArray: Array<Int>? = [10, 22, 3] print(optionalArray.isNilOrEmpty) // prints: false 
0
24 янв. Imanou Petit tərəfindən verilmiş cavab Jan 24 2019-01-24 02:51 '19 'da 2:51' də 2019-01-24 02:51 'də

bu xüsusiyyəti istifadə edə bilərsiniz

  class func stringIsNilOrEmpty(aString: String) -> Bool { return (aString).isEmpty } 
-2
29 нояб. Ahmed Khemiri tərəfindən verilmiş cavab 29 noyabr 2016-11-29 16:54 '16 saat 16:54 'da 2016-11-29 16:54

digər suallar