を要求することができません。NSPredicateは、私は次の操作を実行しようと
基本的に私は、アプリケーションのユーザーが所有するチャットセッションをすべて取得しようとしています。すべてのセッションに少なくとも1つのメッセージがあることを確認しようとします。 また、すべてのセッションを最新のメッセージで並べ替える必要があります。ここで
はクラッシュです:
を要求することができません。NSPredicateは、私は次の操作を実行しようと
基本的に私は、アプリケーションのユーザーが所有するチャットセッションをすべて取得しようとしています。すべてのセッションに少なくとも1つのメッセージがあることを確認しようとします。 また、すべてのセッションを最新のメッセージで並べ替える必要があります。ここで
はクラッシュです:
私はあなたが望むものを達成するためのフェッチ結果コントローラを取得することができますとは思いません。述語は動作させることができます。
predicate = NSPredicate(format: "user.userID = %@ AND [email protected] > 0", IOSUser.sharedInstance().userID)
をしかし、ソートディスクリプタが失われた原因である:CoreDataができる唯一のソートに(永続的な)属性。 1つの解決策は、永続的な属性(例えば、lastMessageDate
)をSession
エンティティに追加することです。セッションとの間でメッセージを追加/削除するときは、必ずこの属性を更新する必要があります。
あなたがフェッチプレーンと一緒に暮らすことができる場合、あなたは述語とMessage
オブジェクトの取得ができます
predicate = NSPredicate(format: "session.user.userID = %@", IOSUser.sharedInstance().userID)
とソートディスクリプタ:
let dateSortDescriptor = NSSortDescriptor(key: "date", ascending: false)
をしてから使用して個別のSession
オブジェクトの配列を抽出
let sessionsArray = fetchResults.valueForKeyPath("@distinctUnionOfObjects.session")
(fetchResults
としてNSArray
)。
私は真 = fetchRequest.includesSubentitiesを追加しようとしましたが、それはまだ私はキーワードでも「ANY」AND ANYメッセージ[SIZE]> 0" – Mikael
失敗した - 私はそれがかもしれない疑いを述語なしでテストし、次にソート記述子を使わずにテストし、問題の原因を調べる(または両方とも!) – Mikael
あなたは述語が問題であることを確認していますしようとした – pbasdf