iOS: Implement search / filtering

This commit is contained in:
Jonathan Schleifer 2017-10-15 13:22:32 +02:00
parent 3c8b2d1d7d
commit d916043c03
No known key found for this signature in database
GPG key ID: 28D65178B37F33E3
7 changed files with 103 additions and 47 deletions

View file

@ -83,21 +83,26 @@ static OFNumber *lengthField, *legacyField;
[super dealloc];
}
- (OFArray<OFString *> *)sites
- (OFArray<OFString *> *)sitesWithFilter: (OFString *)filter
{
void *pool = objc_autoreleasePoolPush();
OFArray *sites = [[_storage allKeys] sortedArray];
/*
* FIXME: We need case folding here, but there is no method for it yet.
*/
filter = [filter lowercaseString];
OFArray *sites = [[[_storage allKeys] sortedArray]
filteredArrayUsingBlock: ^ (id name, size_t index) {
if (filter == nil)
return true;
return [[name lowercaseString] containsString: filter];
}];
[sites retain];
objc_autoreleasePoolPop(pool);
return [sites autorelease];
}
- (size_t)sitesCount
{
return [_storage count];
}
- (bool)hasSite: (OFString *)name
{
return (_storage[name] != nil);