2015-01-29 33 views
18

Tôi đang cố kiểm tra xem một mục cụ thể (giá trị của thuộc tính) có tồn tại trong một mảng đối tượng hay không, nhưng không tìm ra giải pháp nào. Xin vui lòng cho tôi biết, những gì tôi đang thiếu ở đây.cách kiểm tra xem giá trị thuộc tính có tồn tại trong mảng đối tượng nhanh chóng

 class Name { 
      var id : Int 
      var name : String 
      init(id:Int, name:String){ 
       self.id = id 
       self.name = name 
      } 
     } 

     var objarray = [Name]() 
     objarray.append(Name(id: 1, name: "Nuibb")) 
     objarray.append(Name(id: 2, name: "Smith")) 
     objarray.append(Name(id: 3, name: "Pollock")) 
     objarray.append(Name(id: 4, name: "James")) 
     objarray.append(Name(id: 5, name: "Farni")) 
     objarray.append(Name(id: 6, name: "Kuni")) 

     if contains(objarray["id"], 1) { 
      println("1 exists in the array") 
     }else{ 
      println("1 does not exists in the array") 
     } 

Trả lời

31

Bạn có thể lọc các mảng như thế này:

let results = objarray.filter { $0.id == 1 } 

rằng sẽ trả về một mảng của các yếu tố phù hợp với các điều kiện quy định tại thời điểm đóng - trong trường hợp trên, nó sẽ trả về một mảng chứa tất cả các yếu tố có id tài sản tương đương với 1.

Vì bạn cần một kết quả boolean, chỉ cần làm một kiểm tra như:

let exists = results.isEmpty == false 

exists sẽ đúng nếu mảng lọc có ít nhất một yếu tố

1

này hoạt động tốt với tôi:

if(contains(objarray){ x in x.id == 1}) 
{ 
    println("1 exists in the array") 
} 
7

Trong Swift 2.x:

if objarray.contains({ name in name.id == 1 }) { 
    print("1 exists in the array") 
} else { 
    print("1 does not exists in the array") 
} 
6

Trong Swift 3:

if objarray.contains(where: { name in name.id == 1 }) { 
    print("1 exists in the array") 
} else { 
    print("1 does not exists in the array") 
} 
+0

Làm thế nào để trả về một đối tượng khi so sánh thành công? – Hemang

+0

@Hemang sử dụng 'bộ lọc' thay vì' chứa' nếu bạn cần nhiều hơn điều kiện thử nghiệm. –

0

Một lần lặp nhỏ trên @ giải pháp Antonio bằng cách sử dụng các ký hiệu , (where):

if let results = objarray.filter({ $0.id == 1 }), results.count > 0 { 
    print("1 exists in the array") 
} else { 
    print("1 does not exists in the array") 
} 
0

tôi đã đi với giải pháp này cho vấn đề tương tự. Sử dụng chứa trả về một giá trị Boolean.

var myVar = "James" 

if myArray.contains(myVar) { 
      print("present") 
     } 
     else { 
      print("no present") 
     } 
Các vấn đề liên quan