@@ -82,70 +82,11 @@ extension Speaker: CoreDataEncodable {
82
82
83
83
public extension SpeakerManagedObject {
84
84
85
- public enum Property : String {
86
-
87
- case id, firstName, lastName, addressBookSectionName, title, pictureURL, twitter, irc, biography, member
88
- }
89
-
90
85
static var sortDescriptors : [ NSSortDescriptor ] {
91
86
92
- return [ NSSortDescriptor ( key: Property . addressBookSectionName. rawValue, ascending: true ) ,
93
- NSSortDescriptor ( key: Property . firstName. rawValue, ascending: true ) ,
94
- NSSortDescriptor ( key: Property . lastName. rawValue, ascending: true ) ,
95
- NSSortDescriptor ( key: Property . id. rawValue, ascending: true ) ]
96
- }
97
- }
98
-
99
- public extension Speaker {
100
-
101
- static func filter( _ searchTerm: String = " " ,
102
- page: Int , objectsPerPage: Int ,
103
- summit: Identifier ? = nil ,
104
- context: NSManagedObjectContext ) throws -> [ Speaker ] {
105
-
106
- var predicates = [ NSPredicate] ( )
107
-
108
- if searchTerm. isEmpty == false {
109
-
110
- let searchPredicate = NSPredicate ( format: " firstName CONTAINS[c] %@ OR lastName CONTAINS[c] %@ " , searchTerm, searchTerm)
111
-
112
- predicates. append ( searchPredicate)
113
- }
114
-
115
- if let summitID = summit,
116
- let summit = try SummitManagedObject . find ( summitID, context: context) {
117
-
118
- let summitPredicate = NSPredicate ( format: " %@ IN summits " , summit)
119
-
120
- predicates. append ( summitPredicate)
121
- }
122
-
123
- let predicate : NSPredicate ?
124
-
125
- if predicates. count > 1 {
126
-
127
- predicate = NSCompoundPredicate ( andPredicateWithSubpredicates: predicates)
128
-
129
- } else {
130
-
131
- predicate = predicates. first
132
- }
133
-
134
- let results = try context. managedObjects ( ManagedObject . self, predicate: predicate, sortDescriptors: ManagedObject . sortDescriptors)
135
-
136
- var speakers = [ ManagedObject] ( )
137
-
138
- let startRecord = ( page - 1 ) * objectsPerPage
139
-
140
- let endRecord = ( startRecord + ( objectsPerPage - 1 ) ) <= results. count ? startRecord + ( objectsPerPage - 1 ) : results. count - 1
141
-
142
- if ( startRecord <= endRecord) {
143
-
144
- for index in ( startRecord... endRecord) {
145
- speakers. append ( results [ index] )
146
- }
147
- }
148
-
149
- return Speaker . from ( managedObjects: speakers)
87
+ return [ NSSortDescriptor ( key: #keyPath( addressBookSectionName) , ascending: true ) ,
88
+ NSSortDescriptor ( key: #keyPath( SpeakerManagedObject . firstName) , ascending: true ) ,
89
+ NSSortDescriptor ( key: #keyPath( SpeakerManagedObject . lastName) , ascending: true ) ,
90
+ NSSortDescriptor ( key: #keyPath( SpeakerManagedObject . id) , ascending: true ) ]
150
91
}
151
92
}
0 commit comments