Tôi đang viết một ứng dụng trong Swift 2.2 nhắm mục tiêu iOS 8 và sử dụng Realm. Tôi cho phép người dùng sắp xếp các đối tượng dựa trên các thuộc tính tùy chọn khác nhau sử dụng Results.sorted(_:ascending:)
. Điều này làm việc rất tốt cho các loại giảm dần nhưng đối với các loại tăng dần, nil
giá trị được đặt đầu tiên mà không nhìn đúng. Nhiều hệ thống cơ sở dữ liệu có tùy chọn NULLS FIRST/LAST
và với CoreData, có vẻ như có thể subclass NSSortDescriptor
. Có cách nào để luôn đặt giá trị nil
cuối cùng khi sắp xếp trong Realm không? Ngay cả khi chỉ có một chiến lược hacky, điều đó cũng sẽ được đánh giá cao.Realm Swift: luôn đặt giá trị nil cuối cùng trong loại
Trả lời
Lĩnh vực không hỗ trợ sắp xếp tùy chỉnh Results
ngoài phương thức Results.sorted(_:ascending:)
cung cấp cho bạn. Nhưng bạn có thể soạn này mình khá dễ dàng bằng cách kết hợp hai truy vấn, thậm chí có thể phơi bày rằng thông qua một tài sản tính:
var results: [MyModel] {
let sorted = realm.objects(MyModel).sorted("...", ascending: true)
return sorted.filter("optionalProperty != nil") +
sorted.filter("optionalProperty == nil")
}
Trong trường hợp của tôi, nhiều truy vấn sẽ rất khó khăn bởi vì trong nhiều trường hợp nguồn dữ liệu của tôi đã thực hiện điều đó với ưu tiên phân loại khác và tôi chỉ cần phân loại tùy chỉnh này trong một trường hợp. Nó cũng rất có thể cho có được hàng trăm hoặc hàng ngàn kết quả, mà tôi không muốn giữ trong bộ nhớ bằng cách kết nối các kết quả.
Vì vậy, trong khi đây không phải là lý tưởng, tôi đã chọn để lưu trữ một tài sản được cập nhật tự động bởi một tài sản tính date: Date?
với một setter tùy chỉnh mà cập nhật được lưu trữ startDate: Date?
và hasStartDate
tính hasStartDate: Bool
. hasStartDate
cũng được đặt trong trình khởi tạo của tôi cho đối tượng.
này cho phép tôi sử dụng:
realm.objects(SMItem.self).filter(predicate).sorted(by: [
SortDescriptor(keyPath: "hasStartDate", ascending: false),
SortDescriptor(keyPath: "startDate", ascending: true)
])
này trả về đối tượng với một tăng dần startDate
, tiếp theo là đối tượng mà không có một startDate
.
- 1. Đối tượng Realm trả về nil (Swift)
- 2. Realm Swift trả về các đối tượng với tất cả các giá trị nil
- 3. Swift nil có giá trị số?
- 4. self.window luôn luôn là nil
- 5. Swift === with nil
- 6. Cách đặt khóa chính trong Swift cho mẫu Realm
- 7. Có cách nào để đặt tất cả giá trị nil ở cuối khi sắp xếp với mongodb/mongoid?
- 8. Giá trị Nil trên datetime_select?
- 9. carrierwave content_type luôn luôn nil
- 10. Swift - NSHTTPCookie là nil
- 11. Loại dưới cùng trong Swift
- 12. Rails flash [: notice] luôn luôn nil
- 13. Bắt giá trị chèn cuối cùng trong Yii
- 14. Nhận thứ hai với giá trị cuối cùng trong mảng
- 15. InfluxDB - Chỉ nhận giá trị cuối cùng trong truy vấn
- 16. Nên logger luôn luôn cuối cùng và tĩnh?
- 17. Random.Next trả về luôn có cùng giá trị
- 18. Xóa từ cuối cùng khỏi chuỗi trong Swift
- 19. giá trị đọc trong CFDictionary với swift
- 20. Tại sao sử dụng Realm! trong Swift?
- 21. Filtering Realm đối tượng với Swift
- 22. Có sự xuống cấp hiệu suất khi chúng tôi LUÔN LUÔN sử dụng các loại giá trị không có giá trị thay vì các loại giá trị không?
- 23. PHChange changeDetailsForFetchResult - luôn luôn trả về nil
- 24. ID tăng tự động trong Realm, Swift 3.0
- 25. Publish giá trị cuối cùng của một quan sát
- 26. Giá trị đặt ra cho Android Facedetector luôn là 0
- 27. Gán VALUEcủa nil` cho một biến quát gõ trong Swift
- 28. Cách lấy giá trị từ hàng được chèn cuối cùng?
- 29. RxJS takeWhile nhưng bao gồm giá trị cuối cùng
- 30. Remove trailing giá trị nil từ mảng trong ruby