Что-то вроде этого будет работать:
@interface NSString (usefull_stuff)
- (BOOL) isAllDigits;
@end
@implementation NSString (usefull_stuff)
- (BOOL) isAllDigits
{
NSCharacterSet* nonNumbers = [[NSCharacterSet decimalDigitCharacterSet] invertedSet];
NSRange r = [self rangeOfCharacterFromSet: nonNumbers];
return r.location == NSNotFound && self.length > 0;
}
@end
, тогда просто используйте это так:
NSString* hasOtherStuff = @"234 other stuff";
NSString* digitsOnly = @"123345999996665003030303030";
BOOL b1 = [hasOtherStuff isAllDigits];
BOOL b2 = [digitsOnly isAllDigits];
Вам не нужно включать функциональность в расширение для частной категории, как это , но это, безусловно, облегчает повторное использование ..
Мне нравится это решение лучше, чем другие, так как оно никогда не переполняет некоторые int / float, которые сканируются с помощью NSScanner - количество цифр может быть практически любой длины.
Я большой поклонник http://www.liquibase.org/ . Он позволяет вам отслеживать версии вашей базы данных, включая возможность «обновлять» и «откатывать» вашу схему / данные.
У них хороший синтаксис XML, который поддерживает общие рефакторинги, включая те, которые подробно описаны в ] http://databaserefactoring.com/
У них также есть плагины Eclipse, которые помогают создавать сценарии изменений, и задачи ant для интеграции в вашу сборку.
Моя единственная жалоба в том, что она основана на Java, и мне это нравится установки java на моем сервере сборки для проектов .NET. В таком случае я
Вам следует изучить, как такие фреймворки, как rails, обрабатывают миграции
http://dizzy.co.uk/ruby_on_rails/cheatsheets/rails-migrations
I могу порекомендовать вам такой сценарий:
Если ваша компания использует ORM, вы можете на лету создать схему базы данных «diff» на основе механизма ORM. Кроме того, если ваш продукт работает с разными базами данных, у вас будет дополнительный уровень сложности. К сожалению, ни dbdeploy , ни Liquiase не удовлетворили меня при разработке / рефакторинге нескольких баз данных.