私の関係は下の画像のようになります。CoreData関係で並べ替え
私は積極的に推進して、その後、開始日であるもので最初のイベントをソートしたいと思います。プロモーションは、現在の日付が開始日と終了日の間にある場合にアクティブになります。残念ながら、CoreDataのために、私は並べ替えのために一時的なプロパティを使用することができません。私のコントローラでは、フェッチコントローラを使用していません。
これを達成する方法はありますか?
更新:
私は、ソート記述子を以下ました:
// First is incorrect
[NSSortDescriptor(key: "promotion.start", ascending: false),
NSSortDescriptor(key: "start", ascending: true)]
述語(彼らはOKだ、しかし):
let promotionsPredicate =
NSPredicate(format: "(%@ >= promotion.start && %@ <= promotion.end) && " +
"(ANY promotion.cities.id == %@)", NSDate(), NSDate(), objectID)
let eventsPredicate =
NSPredicate(format: "start >= %@ && venue.city.id == %@",
NSDate(), objectID)
let subpredicates = [eventsPredicate, promotionsPredicate]
let compoundPredicate NSCompoundPredicate(orPredicateWithSubpredicates: subpredicates)
そして、これは要求(IですCoreStoreを使用していますが、このアイデアは明確でなければなりません)。
class func pagedEventsForPredicateSortedByInPromoAndStartDate(predicate: NSPredicate,
descriptors: [NSSortDescriptor],
fetchOffset: Int,
fetchLimit: Int) -> [Event] {
return CoreStore.fetchAll(From(Event),
Where(predicate),
OrderBy(descriptors),
Tweak { (fetchRequest) -> Void in
fetchRequest.fetchOffset = fetchOffset
fetchRequest.fetchLimit = fetchLimit
fetchRequest.returnsObjectsAsFaults = false
}) ?? []
}
はい。しかし、より多くの助けが必要な場合は、いくつかのコード(およびあなたがそれをやりたい言語)を表示してください。 – sschale
ありがとう、私はスイフトを使用していますが、言語は私にとって重要ではありません。明日の簡単なコードで私の答えを更新します。 – apetrov
何が問題なのですか? – Fogmeister