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