2016-02-13 77 views
0

假設我有很多城市對象。所以,城市ID將作爲我的主鍵,因爲它們不能重複。將會有相同的城市名稱,但不同的ID和不同的ShopAddress.Here是我的從JSON結果這是從我的後端RealmSwift數據過濾

{ 
    "CityName" : "NewYork", 
    "ID" : 65, 
    "CityCode" : "NY", 
    "ShopAddress" : "NO.7\/8 17th quarter, 27th Street, LiverPool Township, NewYork." 

}, 
{ 
    "CityName" : "NewYork", 
    "ID" : 89, 
    "CityCode" : "NY", 
    "ShopAddress" : "NO.7\/8 17th quarter, 40th Street, West Stadium, NewYork." 
}, 
{ 
    "CityName" : "Maimi", 
    "ID" : 150, 
    "CityCode" : "MI", 
    "ShopAddress" : "NO.7\/8 17th quarter, 40th Street, West Stadium, Maimi." 
}...etc 

這裏是我的境界對象

import Foundation 
import RealmSwift 

class StoreList: Object { 

dynamic var storeID : String = "" 
dynamic var cityCode : String = "" 
dynamic var cityName : String = "" 
dynamic var shopAddress :String = "" 

override static func primaryKey() -> String? { 
    return "storeID" 
} 

} 

如何獲得其關注每個CityNames CityNames和適當的店鋪地址的數據?

for (var i = 0; i <= cityname.count; i++) { 
     cityItems.append("City Names from realm") 
     actualPositions.append(-1) 

     var items = [String]() 
     for (var i = 0; i < cityName["Newyork"].shopaddress.count; i++) { 
      items.append("the locations shop address of each item from each cities") 
     } 

     self.locationItems.append(items) 
    } 

我想這樣做,因爲我想在我的手風琴表視圖中顯示。 enter image description here

上面的代碼我寫的只是一個例子。會有很多錯誤。但是,我真的需要幫助filtering.Any幫助嗎?

+0

我沒有得到你想要達到的目標嗎? – Anokrize

+0

你看過我的屏幕截圖了嗎?這就是我想要做的。但是,我需要首先獲取數據保存到領域數據庫。將會有許多城市。每個城市將包括商店address.Cities可能是重複的,但城市id不會重複。 –

+0

啊,所以你想顯示你的城市下的商店(如果有一些可用於城市)? – Anokrize

回答

0

好這裏是我的解決方案:

首先你通過你的對象循環,得到所有的城市,把所有的人都到一個數組。您還要查找重複的城市,以便每個城市都有一個部分:

var cities = [string]() 
var items = [int]() 

// loop through your realm objects 
for (var i = 0; i <= RealmObjects.count; i++) { 

    // add every city to your array if it isn't already in your array 
    if !cities.contains(RealmObjects.CityName) { 
     cities.append(RealmObjects.CityName) 
     items.append(1) 
    } 
    else { 
     // get index of city 
     let indexOfCity = cities.indexOf(RealmObjects.CityName) 
     // get number of shops for the city 
     var numberOfShops = cities[indexOfCity] 
     numberOfShops += 1 
     // raise items for section by 1 
     items[indexOfCity] = numberOfShops 
    } 

} 

// in your tableViewController add these sections as the title of your header 
override func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? { 

// this is your array including the cities 
return self.cities 

} 

override func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
// return the number of sections 
return self.section.count 

} 

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
// return the number of rows for one section 
return self.items[section] // not sure with this you have to get the current section 

} 

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCellWithIdentifier("tableCell", forIndexPath: indexPath) 

    // Add the shops in your section 
    cell.textLabel?.text = self.RealmObjects.ShopAddress[indexPath.row] 

    return cell 

} 

我沒有嘗試此代碼...這是基本方法。 快速的解釋:

  1. 你必須把城市變成一個數組(無市的一式兩份)
  2. 計數的店鋪數量爲一個城市
  3. 設置適當的到是裏面的城市節陣列
  4. 設置的行數,一個部分爲這個你應該讀出的計數商店爲一個城市的陣列
  5. 設置節數
  6. 至少調用cellForRowA tIndexPath爲了設置單元格的文本
+0

好的,謝謝讓我試試看,並會讓你知道。 ; D –

+0

我可以在聊天時認識你嗎? –