Skip to content

Instantly share code, notes, and snippets.

View Czajnikowski's full-sized avatar
🚀

Maciek Czarnik Czajnikowski

🚀
View GitHub Profile
let fetchRequest = NSFetchRequest<Contact>(
entityName: Contact.entity().name!
)
fetchRequest.predicate = NSCompoundPredicate(
orPredicateWithSubpredicates: [
"name",
"surname",
"city"
]
public class Contact: NSManagedObject {
@NSManaged public var name: String
@NSManaged public var surname: String
@NSManaged public var addresses: Set<Address>
}
public class Address: NSManagedObject {
@NSManaged public var city: String
}
let contacts: [Contact] = …
var results = [Contact]()
for contact in contacts {
var addressesMatchingQuery = [Address]()
for address in contact.addresses {
if address.city == searchQuery {
addressesMatchingQuery.append(address)
}
}
let contacts: [Contact] = …
let results = contacts.filter { contact in
var addressesMatchingQuery = [Address]()
for address in contact.addresses {
if address.city == searchQuery {
addressesMatchingQuery.append(address)
}
}
let contacts: [Contact] = …
let results = contacts.filter { contact in
let addressesMatchingQuery = contact.addresses.filter { address in
address.city == searchQuery
}
return addressesMatchingQuery.count > 0
}
let contacts: [Contact] = …
let results = contacts.filter { contact in
contact.addresses.filter { address in
address.city == searchQuery
}.count > 0
}
"SUBQUERY(addresses, $address, $address.city ==[cd] \"\(searchQuery)\").@count > 0"
reduce(initialValue) {
...
if resultIsGoodEnough($0) {
break // and return current $0
}
}
reduce(initialValue) {
...
if resultIsGoodEnough($0) {
return $0 // No break here!
}
}
reduce(
initialValue,
{ ... },
until: resultIsGoodEnough
)