Создайте пользовательский класс для разбора строки - PullRequest
1 голос
/ 02 апреля 2011

Я создал метод, который возвращает строку на основе значений, найденных в NSUserDefaults.

- (NSString *) getString:(NSInteger *)intID {

    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
    NSString *strMyString;

    if ((int)intID == 1) {
        strMyString = [userDefaults stringForKey:kSomeStuff];
    } else {
        strMyString = [userDefaults stringForKey:kSomeOtherStuff];
    }

    // ... do a bunch of string parsing
    return strMyString; 
}

Отлично работает.За исключением того, что я дублировал этот метод в полудюжине различных классов контроллеров представления.Это кажется идеальным случаем для пользовательского класса, который может использоваться всеми различными контроллерами представления.Но я понятия не имею, как это сделать.Любая помощь приветствуется!LQ

Ответы [ 4 ]

2 голосов
/ 02 апреля 2011

Это было бы идеальное использование категории на NSUserDefaults. Тогда у вас могут быть такие методы:

- (NSString *)someStuff {
    return [self stringForKey:kSomeStuff];
}

- (NSString *)someOtherStuff {
    return [self stringForKey:kSomeOtherStuff];    
}

Затем, когда вам понадобятся эти значения, вы просто напишите:

[[NSUserDefaults standardUserDefaults] someStuff];
1 голос
/ 02 апреля 2011

Простым решением является добавление класса, который наследуется от NSObject (с именем "StringMangler" или чего-либо еще), и размещение вашего (надеюсь) метода удобства без сохранения состояния в качестве статического метода:

+ (NSString *) getString:(NSInteger *)intID {

По вашему мнению контроллеры, #import "StringMangler.h", а затем вызовите

[StringMangler getString:myID];
0 голосов
/ 02 апреля 2011

функция - это все, что вам нужно:

NSString * MONIdentifiedStringForID(NSInteger intID) {
    NSUserDefaults * userDefaults = [NSUserDefaults standardUserDefaults];
    NSString * s = nil;
    if (intID == 1) {
        s = [userDefaults stringForKey:kSomeStuff];
    }
    else {
        s = [userDefaults stringForKey:kSomeOtherStuff];
    }
    assert(s);
    /* ... do a bunch of string parsing */
    return s;
}

если ваши классы не имеют отношения, то вы можете просто обернуть его как / при необходимости:

- (NSString *)getString:(NSInteger)intID {
    return MONIdentifiedStringForID(intID);
}
0 голосов
/ 02 апреля 2011

Создайте пользовательский класс и назовите его, например, UserDefaultsHelper.Поместите весь код, который вы написали, для обработки чтения и записи в NSUserDefaults.Затем просто используйте эту настройку во всех ваших контроллерах, когда вам нужен доступ к этой информации.Таким образом, если вам нужно внести изменения, у вас есть только одно место для поиска.

...