2015-05-17 20 views
5

Trong RealmSwift tôi (0.92.3) dưới Xcode6.3, thế nào tôi sẽRealm ngày truy vấn

// the Realm Object Definition 
import RealmSwift 

class NameEntry: Object { 
    dynamic var player = "" 
    dynamic var gameCompleted = false 
    dynamic var nrOfFinishedGames = 0 
    dynamic var date = NSDate()  
} 

Các tableView hiện thấy số lượng đối tượng (ví dụ: hiện tất cả các đối tượng) như sau:

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 

    if let cnt = RLM_array?.objects(NameEntry).count { 
     return Int(cnt) 
    } 
    else { 
     return 0 
    } 
} 

Câu hỏi đầu tiên: Làm cách nào để tìm số đối tượng có mục nhập ngày sau, giả sử ngày 15.06.2014 ?? (ví dụ: truy vấn ngày ở trên một ngày cụ thể từ một đối tượng RealmSwift-Object hoạt động như thế nào?). Hay nói cách khác, phương pháp trên sẽ tìm số đối tượng với phạm vi ngày cần thiết như thế nào ??

Các điền thành công của tất cả các Realm-Objects thành một tableView trông như sau:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

    var cell = tableView.dequeueReusableCellWithIdentifier("NameCell") as! PlayersCustomTableViewCell 

    if let arry = RLM_array { 
     let entry = arry.objects(NameEntry)[indexPath.row] as NameEntry 
     cell.playerLabel.text = entry.player 
     cell.accessoryType = entry.gameCompleted ? .None : .None 
     return cell 
    } 
    else { 
     cell.textLabel!.text = "" 
     cell.accessoryType = .None 
     return cell 
    } 
}   

Câu hỏi thứ hai: Làm thế nào tôi sẽ điền vào tableView chỉ RealmSwift-Đối tượng rằng có một ngày cụ thể (tức là ví dụ chỉ điền các đối tượng có ngày trở lại vào ngày 15.06.2014). Hay nói cách khác, làm thế nào phương pháp trên chỉ điền vào bảngXem các đối tượng với phạm vi ngày cần thiết ??

Trả lời

13

Bạn có thể truy vấn lĩnh vực có ngày.

Nếu bạn muốn nhận các đối tượng sau một ngày, hãy sử dụng lớn hơn (>), cho các ngày trước, sử dụng ít hơn (<).

Sử dụng một vị với một đối tượng NSDate cụ thể sẽ làm những gì bạn muốn:

let realm = Realm()  
let predicate = NSPredicate(format: "date > %@", specificNSDate) 
let results = realm.objects(NameEntry).filter(predicate) 

Câu hỏi 1: Đối với số đối tượng, chỉ cần gọi đếm: results.count

Câu hỏi 2: results là một mảng của NameEntrys sau specificNSDate, lấy đối tượng tại indexPath. Ví dụ, let nameEntry = results[indexPath.row]

Đối với việc tạo ra một đối tượng NSDate cụ thể, hãy thử câu trả lời này: How do I create an NSDate for a specific date?