如何让Appdelegate的代码更简洁合理

如何让Appdelegate的代码更简洁合理,第1张

方案有很多种:

1, 通过AppDelegate保存为全局变量,再获取

2,使用NSUSerDefault

第一种 :通过AppDelegate方法:

定义全局变量

//

// AppDelegate.h

//

// Created by MISSAJJ on 15/5/5.

// Copyright (c) 2015年 MISSAJJ. All rights reserved.

//

#import <UIKit/UIKit.h>

@interface AppDelegate : UIResponder <UIApplicationDelegate >

@property (strong, nonatomic) UIWindow *window

@property (strong, nonatomic) NSString *globalAppThemeColor

@property (strong, nonatomic) NSString *globalAboutTag

@end

在AppDelegate.m 内赋值:

_globalAppThemeColor = appDetails.appThemeColor

_globalAboutTag = appDetails.about

在需要的VC头部导入

#import "AppDelegate.h"

- (void)viewDidLoad {

[super viewDidLoad]

//创建

AppDelegate * appDelegate=(AppDelegate*)[[UIApplication sharedApplication]delegate]

}

获得变量

NSString *about = appDelegate.globalAboutTag

NSString *theme = appDelegate.globalAppThemeColor

灵活运用到代码需求的地方

//navi设置为全局主题色

self.navigationController.navigationBar.barTintColor = [UIColor colorWithHexString:appDelegate.globalAppThemeColor alpha:1]

=================I am 华丽丽的分割线 ^_^========================

第二种 :通过NSUserDefaults方法:

查找了相关资料,自己整理了一份NSUserDefaults文摘给有共同有需求的程序猿朋友们.

一 ,NSUserDefaults 简单的运用方法

NSUserDefaults一般可以存取一些短小的信息,比如存入再读出一个字符串到NSUserDefaults

注意 : key值必须要相同才能读取出来哦!

NSUserDefaults只支持: NSString, NSNumber, NSDate, NSArray, NSDictionary, 不是所有数据都能往里放滴哦~

//存储数据

NSString *string = [NSString stringWithString @"我想存储的字符串内容"]

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]

[userDefaults setObject:string forKey:@"theme"]

//在存储数据的地方,别忘了这一句

[[NSUserDefaults standardUserDefaults] synchronize]

//在需要的地方获取数据

NSString *getStringValue = [[NSUserDefaults standardUserDefaults] objectForKey:@"theme"]

二 , 如果需要保存比较多得数据, 可以通过模型保存和读取

1.模型代码

//

// AreasModel.h

////

// Created by MISSAJJ on 15/5/7.

// Copyright (c) 2015年 MISSAJJ. All rights reserved.

//

#import <Foundation/Foundation.h>

@interface AreasModel : NSObject

/*

* about 模型

*/

@property (nonatomic,copy)NSString * about

@property (nonatomic,copy)NSString * appThemeColor

@end

记住必须要在 M 文件 里 写这两个方法

- (id) initWithCoder: (NSCoder *)coder

- (void) encodeWithCoder: (NSCoder *)coder

然后把该自定义的类对象编码到 NSData中,再从NSUserDefaults中进行读取。

//

// AreasModel.m

////

// Created by MISSAJJ on 15/5/7.

// Copyright (c) 2015年 MISSAJJ. All rights reserved.

//

#import "AreasModel.h"

@implementation AreasModel

- (id)initWithCoder:(NSCoder *)aDecoder

{

if(self = [super init])

{

self.about = [aDecoder decodeObjectForKey:@"about"]

self.appThemeColor = [aDecoder decodeObjectForKey:@"appThemeColor"]

}

return self

}

- (void)encodeWithCoder:(NSCoder *)aCoder

{

[aCoder encodeObject:self.about forKey:@"about"]

[aCoder encodeObject:self.appThemeColor forKey:@"appThemeColor"]

}

@end

2. 存储数据的代码

//////////////////////////

以上省略........

//////////////////////////

//URL编码成UTF8

dirPath = [dirPath stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]

NSURL * dirUrl = [NSURL URLWithString:dirPath]

NSMutableURLRequest * dirRequest = [NSMutableURLRequest requestWithURL:dirUrl]

NSData *dirJsonData = [NSURLConnection sendSynchronousRequest:dirRequest returningResponse:nil error:nil]

NSDictionary *dirListJsonData = [NSJSONSerialization JSONObjectWithData:dirJsonData options:0 error:nil]

NSDictionary* dicData = [dirListJsonData objectForKey:@"data"]

#pragma mark ====保存临时主题和关于信息====

NSString *about = [dicData objectForKey:@"about"]

NSString *theme = [dicData objectForKey:@"theme"]

//创建模型

AreasModel *themeAndAbout = [[AreasModel alloc] init]

themeAndAbout.about = about

themeAndAbout.appThemeColor = theme

//保存数据,用归档保存到NSUserDefault

NSData *themeAndAboutData = [NSKeyedArchiver archivedDataWithRootObject:themeAndAbout]

[[NSUserDefaults standardUserDefaults] setObject:themeAndAboutData forKey:@"themeAndAbout"]

[[NSUserDefaults standardUserDefaults] synchronize]

3. 获取数据代码

//获得保存数据

NSData *getthemeAndAboutData = [[NSUserDefaults standardUserDefaults] objectForKey:@"themeAndAbout"]

//转成模型获取数据

AreasModel *getThemeAndAbout = [NSKeyedUnarchiver unarchiveObjectWithData:getthemeAndAboutData]

NSLog(@"%@,%@",getThemeAndAbout.appThemeColor, getThemeAndAbout.about)

1、我最大的梦想就是能自由自在地生活,能够自由自在地工作,而且工作的收入能够养家糊口。

2、我虽然不想大富大贵,可也不想让自己为了基本的生活而整天劳碌奔波没有自由和快乐。

3、自由自在的生活必须有健康的身体作保证,我虽然不想得道成仙,可我梦想通过修炼使自己的身体健健康康,很羡慕那些有道高德们,他们能够主宰自己的命运。

4、把工作变成爱好,把爱好变成工作。这恐怕既是我的梦想,也是多数人的梦想。世界上没有什么比通过快乐的工作,获得报酬更幸福了!因为快乐的工作是健身的,压抑的工作是伤身的。

5、我梦想在自己有朝一日老去的时候,像那些高僧大德一样,无疾而终,预知未来。

方案有很多种:

1, 通过AppDelegate保存为全局变量,再获取

2,使用NSUSerDefault

第一种 :通过AppDelegate方法:

定义全局变量

//

// AppDelegate.h

//

// Created by MISSAJJ on 15/5/5.

// Copyright (c) 2015年 MISSAJJ. All rights reserved.

//

#import <UIKit/UIKit.h>

@interface AppDelegate : UIResponder <UIApplicationDelegate >

@property (strong, nonatomic) UIWindow *window

@property (strong, nonatomic) NSString *globalAppThemeColor

@property (strong, nonatomic) NSString *globalAboutTag

@end

在AppDelegate.m 内赋值:

_globalAppThemeColor = appDetails.appThemeColor

_globalAboutTag = appDetails.about

在需要的VC头部导入

#import "AppDelegate.h"

- (void)viewDidLoad {

[super viewDidLoad]

//创建

AppDelegate * appDelegate=(AppDelegate*)[[UIApplication sharedApplication]delegate]

}

获得变量

NSString *about = appDelegate.globalAboutTag

NSString *theme = appDelegate.globalAppThemeColor

灵活运用到代码需求的地方

//navi设置为全局主题色

self.navigationController.navigationBar.barTintColor = [UIColor colorWithHexString:appDelegate.globalAppThemeColor alpha:1]

=================I am 华丽丽的分割线 ^_^========================

第二种 :通过NSUserDefaults方法:

查找了相关资料,自己整理了一份NSUserDefaults文摘给有共同有需求的程序猿朋友们.

一 ,NSUserDefaults 简单的运用方法

NSUserDefaults一般可以存取一些短小的信息,比如存入再读出一个字符串到NSUserDefaults

注意 : key值必须要相同才能读取出来哦!

NSUserDefaults只支持: NSString, NSNumber, NSDate, NSArray, NSDictionary, 不是所有数据都能往里放滴哦~

//存储数据

NSString *string = [NSString stringWithString @"我想存储的字符串内容"]

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]

[userDefaults setObject:string forKey:@"theme"]

//在存储数据的地方,别忘了这一句

[[NSUserDefaults standardUserDefaults] synchronize]

//在需要的地方获取数据

NSString *getStringValue = [[NSUserDefaults standardUserDefaults] objectForKey:@"theme"]

二 , 如果需要保存比较多得数据, 可以通过模型保存和读取

1.模型代码

//

// AreasModel.h

////

// Created by MISSAJJ on 15/5/7.

// Copyright (c) 2015年 MISSAJJ. All rights reserved.

//

#import <Foundation/Foundation.h>

@interface AreasModel : NSObject

/*

* about 模型

*/

@property (nonatomic,copy)NSString * about

@property (nonatomic,copy)NSString * appThemeColor

@end

记住必须要在 M 文件 里 写这两个方法

- (id) initWithCoder: (NSCoder *)coder

- (void) encodeWithCoder: (NSCoder *)coder

然后把该自定义的类对象编码到 NSData中,再从NSUserDefaults中进行读取。

//

// AreasModel.m

////

// Created by MISSAJJ on 15/5/7.

// Copyright (c) 2015年 MISSAJJ. All rights reserved.

//

#import "AreasModel.h"

@implementation AreasModel

- (id)initWithCoder:(NSCoder *)aDecoder

{

if(self = [super init])

{

self.about = [aDecoder decodeObjectForKey:@"about"]

self.appThemeColor = [aDecoder decodeObjectForKey:@"appThemeColor"]

}

return self

}

- (void)encodeWithCoder:(NSCoder *)aCoder

{

[aCoder encodeObject:self.about forKey:@"about"]

[aCoder encodeObject:self.appThemeColor forKey:@"appThemeColor"]

}

@end

2. 存储数据的代码

//////////////////////////

以上省略........

//////////////////////////

//URL编码成UTF8

dirPath = [dirPath stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]

NSURL * dirUrl = [NSURL URLWithString:dirPath]

NSMutableURLRequest * dirRequest = [NSMutableURLRequest requestWithURL:dirUrl]

NSData *dirJsonData = [NSURLConnection sendSynchronousRequest:dirRequest returningResponse:nil error:nil]

NSDictionary *dirListJsonData = [NSJSONSerialization JSONObjectWithData:dirJsonData options:0 error:nil]

NSDictionary* dicData = [dirListJsonData objectForKey:@"data"]

#pragma mark ====保存临时主题和关于信息====

NSString *about = [dicData objectForKey:@"about"]

NSString *theme = [dicData objectForKey:@"theme"]

//创建模型

AreasModel *themeAndAbout = [[AreasModel alloc] init]

themeAndAbout.about = about

themeAndAbout.appThemeColor = theme

//保存数据,用归档保存到NSUserDefault

NSData *themeAndAboutData = [NSKeyedArchiver archivedDataWithRootObject:themeAndAbout]

[[NSUserDefaults standardUserDefaults] setObject:themeAndAboutData forKey:@"themeAndAbout"]

[[NSUserDefaults standardUserDefaults] synchronize]

3. 获取数据代码

//获得保存数据

NSData *getthemeAndAboutData = [[NSUserDefaults standardUserDefaults] objectForKey:@"themeAndAbout"]

//转成模型获取数据

AreasModel *getThemeAndAbout = [NSKeyedUnarchiver unarchiveObjectWithData:getthemeAndAboutData]

NSLog(@"%@,%@",getThemeAndAbout.appThemeColor, getThemeAndAbout.about)


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11358379.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-15
下一篇2023-05-15

发表评论

登录后才能评论

评论列表(0条)

    保存