创建自定义类以解析字符串

时间:2011-04-02 02:26:36

标签: iphone objective-c xcode class-design

我已经创建了一个方法,该方法根据从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 个答案:

答案 0 :(得分:2)

这将完美地使用category on NSUserDefaults。然后你可以有这样的方法:

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

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

然后,当您需要这些值时,您只需写下:

[[NSUserDefaults standardUserDefaults] someStuff];

答案 1 :(得分:1)

一个简单的解决方案是添加一个继承自NSObject(名为“StringMangler”或其他)的类,并将您的(希望)无状态便捷方法作为静态方法放在那里:

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

在视图控制器中,#import "StringMangler.h"然后调用

[StringMangler getString:myID];

答案 2 :(得分:0)

创建一个自定义类,并将其命名为UserDefaultsHelper。将您编写的所有代码都放到NSUserDefaults的读写中。然后,当您需要访问该信息时,只需在所有控制器中使用此自定义。这样,如果您需要进行更改,您只有一个地方可以查看。

答案 3 :(得分:0)

你需要的只是一个功能:

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);
}