停止使用静态NSString,而改为使用plist字典

| 我在导入下面使用此代码来定义一些信息。我想改为使用plist提取此信息。如何切换?
static NSUInteger kCGRectY = 520;
static NSUInteger kCGRectH = 340;
static NSString *kImage = @\"Cover.png\";
static NSString *kMImage = @\"IMG_0172.JPG\";
static NSString *kNames = @\"WHO ELSE WORKED ON IT\";
static NSString *kTitle = @\"PROJECT DANDELION\";
static NSString *kText  = @\"Lorem ipsum dolor sit amet, consectetur adipisicing elit\";
在代码中,我像这样使用它:
[pageView setImage:[UIImage imageNamed:kImage]];
UIImage *image = [UIImage imageNamed:kMImage];
CGSize size = [image size];
[colorView setFrame:CGRectMake(0, kCGRectY, size.width, kCGRectH)];
有任何想法吗?     
已邀请:
一种简单的方法是使用预处理器来处理更改访问它的所有代码,并让一个对象或类处理从plist加载信息。 对于每个变量,用以下代码替换变量声明:
#define kImage ([(AppDelegateClass*)[[UIApplication sharedApplication] delegate] getStringForKey:@\"kImage\"])
然后,在您的应用程序委托中,实现
getStringForKey:
方法。
- (NSString *)getStringForKey:(NSString *)key {
    static NSDictionary *plist = nil;
    if(!plist) plist = [[NSDictionary alloc] initWithContentsOfFile:@\"path/to/plist.plist\"];
    return [plist objectForKey:key];
}
请注意,此代码仅处理字符串,而不处理数字。如果您希望数字也来自plist,则可以将它们添加为字符串并获取整数值:
#define kCGRectY ([[(AppDelegateClass*)[[UIApplication sharedApplication] delegate] getStringForKey:@\"kCGRectY\"] intValue])
    

要回复问题请先登录注册