2016-05-06 98 views
0

我嘗試將搜索欄實現到我的表格視圖。但我在一個函數中得到這個錯誤。不知道如何解決?類型'[Businessdata]'的值沒有成員'objectAtIndex'

Value of type '[Businessdata]' has no member 'objectAtIndex' 

我的代碼

var arrDict = [Businessdata]() 

    func searchMethod(notification:NSNotification) 
    { 

     isSearching = true; 

     let text:String = notification.userInfo!["text"] as! String; 

     arrSearch = []; 

     for(var i=0;i<arrDict.count;i++) 
     { 
      if((arrDict.objectAtIndex(i).objectForKey("name")?.lowercaseString?.containsString(text.lowercaseString)) == true) 
      { 
       arrSearch.addObject(arrDict.objectAtIndex(i)); 
      } 
     } 

     TableViewList.reloadData(); 

    } 

編輯:

import UIKit 

class Businessdata: NSObject { 

    var BusinessName: String? 
    var BusinessEmail: String? 
    var BusinessLatLng: NSArray? 
    var Address: String? 
    var ContactNumber: String? 
    var WebsiteUrl: String? 
    var Specialities:Array<String>? 
    var StoreImages: NSArray? 
    var Languages:Array<String>? 
    var PaymentMethod:Array<String>? 
    var OpenHours: [NSDictionary]? 
    var Rating: Float? 
    var Updated_date: String? 
    var FeaturedBusiness: NSDictionary? 

    init(json: NSDictionary) 
    { 
     self.BusinessName = json["business_name"] as? String 
     self.BusinessEmail = json["business_email"] as? String 
     self.BusinessLatLng = json["latlng"] as? NSArray 
     self.Address = json["location"] as? String 
     self.ContactNumber = json["phone_no"] as? String 
     self.WebsiteUrl = json["website_url"] as? String 
     self.Specialities = json["specialities"] as? Array<String> 
     self.StoreImages = json["images"] as? NSArray 
     self.Languages = json["languages"] as? Array<String> 
     self.PaymentMethod = json["method_payment"] as? Array<String> 
     self.OpenHours = json["opening_hours"] as? [NSDictionary] 
     self.Rating = json["__v"] as? Float 
     self.Updated_date = json["updated_at"] as? String 

     if((json["featured_business"]) != nil) 
     { 
      self.FeaturedBusiness = json["featured_business"] as? NSDictionary 
     } 
    } 

} 

在這裏,我已經發布了Bussinessdata類code.Now如何解決我的問題 幫我出去!

+1

你想使用Swift對象,就好像它們是'NS'對象一樣。這會導致很多錯誤。我建議編寫實際的Swift代碼。 –

+0

您至少在Swift 2中不推薦使用迭代。最好在0 .. Akaino

+0

你剛剛使用一些工具將Obj-C轉換爲Swift嗎? – Sulthan

回答

1

數組中沒有objectAtIndex。你需要做這樣的事情:

arrDict[i] 

而不是

arrDict.objectAtIndex(i) 

編輯

正如我們在評論中討論,這是你所需要的

if((arrDict[i].name.lowercaseString?.containsString(text.lower‌​caseString)) == true) 
+0

現在我收到另一個錯誤''Value of type'Businessdata'has no member'objectForKey'' .. – user5513630

+0

in this line if((arrDict [i] .objectForKey(「name」)?. lowercaseString?.containsString( text.lowercaseString))== true)1 – user5513630

+0

是BuisnessData是一個自定義類 – penatheboss

1

嘗試這一個:

func searchMethod(notification:NSNotification) 
    { 

    isSearching = true; 

    let text:String = notification.userInfo!["text"] as! String; 

    arrSearch = []; 

    for(var i=0;i<arrDict.count;i++) 
    { 
     if((arrDict[i].BusinessName.lowercaseString?.containsString(text.lower‌​caseString)) == true) 
     { 
      arrSearch.addObject(arrDict[i]);// or arrSearch.append(arrDict[i]) 
     } 
    } 

    TableViewList.reloadData(); 

} 
+0

同樣的錯誤''String'類型的值沒有成員'lower caseString' – user5513630

1

objectAtIndex:屬於NSArrayobjectForKey:屬於NSDictionary
這兩個都不適用於Swift本機類型。

但有兩個致命的問題:

Businessdata是不以objectForKey:任何響應的自定義類,並且在類沒有財產name

假設你正在談論的財產BusinessName和邏輯應該過濾所有Businessdata情況下,其小寫的BusinessName字符串包含搜索字符串,你可以寫

arrSearch = [Businessdata]() 

for item in arrDict { 
    if let businessName = item.BusinessName as? String where businessName.lowercaseString.containsString(text.lowercaseString) { 
    arrSearch.append(item) 
    } 
} 

swifiter

arrSearch = arrDict.filter({ (item) -> Bool in 
    if let businessName = item.BusinessName as? String { 
    return businessName.lowercaseString.containsString(text.lowercaseString) 
    } 
    return false 
}) 

請遵守命名約定並始終使用以小寫字母開頭的變量名稱。

+0

爲什麼要求使用小寫字母的var名稱?命名傳統 - 這取決於任何人,不是嗎?在某些情況下,我認爲這是正確的,但是在開發應用程序時,swift提供了許多方法來滿足您的需求 – pedrouan

相關問題