狗狗地图项目总结
来源:互联网 发布:加入农村淘宝的好处 编辑:程序博客网 时间:2024/04/30 00:13
归档:
+ (MXUser *)currentUser{
NSData *encodedUser = [[NSUserDefaults standardUserDefaults] objectForKey:@"user_key"];
MXUser *user = (MXUser *)[NSKeyedUnarchiver unarchiveObjectWithData:encodedUser];
return user;
}
类别:可以不需要继承,直接扩展方法,一般用于一些方法调用的方法
- (void)showText:(NSString*)str
{
MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
hud.removeFromSuperViewOnHide = YES;
hud.mode = MBProgressHUDModeText;
hud.labelText = str;
[hud hide:YES afterDelay:1.5];
}
3.SVPUllReFresh
self.refreshControl = [[UIRefreshControl alloc] init];
[self.refreshControl addTarget:self action:@selector(refreshData:) forControlEvents:UIControlEventValueChanged];
[_tableView addSubview:self.refreshControl];
[_tableView addInfiniteScrollingWithActionHandler:^{
NSInteger offsetId = 0;
if(weakSelf.messageMuArr.count>0){
UserMessage *temp = [weakSelf.messageMuArr lastObject];
offsetId = temp.id;
}
[weakSelf getListData:offsetId];
}];
[_tableView triggerInfiniteScrolling];
}
- (void)getListData:(NSInteger)page
{
[UserMessage messageListWithOffsetId:page success:^(NSArray *userMessageList, BOOL hasMore) {
if (0 == page) {
[_messageMuArr removeAllObjects];
}
[_messageMuArr addObjectsFromArray:userMessageList];
[_tableView reloadData];
[self.refreshControl endRefreshing];
[_tableView.infiniteScrollingView stopAnimating];
_tableView.showsInfiniteScrolling = hasMore;
} failure:^(NSError *error) {
[self showError:error];
[self.refreshControl endRefreshing];
[_tableView.infiniteScrollingView stopAnimating];
}];
}
//重用formatter
- (NSDateFormatter *)formatter {
if (! _formatter) {
_formatter = [[NSDateFormatter alloc] init];
_formatter.dateFormat = @"yyyy.MM.dd HH:mm:ss"; // twitter date format
}
return _formatter;
}
故事版
UIStoryboard* storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
// DogFriendsDetailViewController*dogFriendsVC = [storyboard instantiateViewControllerWithIdentifier:@"DogFriendsDetailViewController"];
[self.tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:selectedIndex inSection:0] animated:YES scrollPosition:UITableViewScrollPositionNone];
_dogImageView.layer.cornerRadius = 49;
_dogImageView.layer.masksToBounds = YES;
NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc] initWithString:kmStr];
[attrString addAttribute:NSFontAttributeName
value:[UIFont systemFontOfSize:20.0f]
range:NSMakeRange(kmStr.length-2, 2)];
[cell.kilometreLab setAttributedText:attrString];
__weak DogFriendsViewController *weakSelf = self; //block里面为弱引用
本地推送
JSONMOdel
@interface MXUser :JSONModel
这是一个可以讲json 数据转换为对象的三方库。很好用
只要模型的字段和接口的字段匹配就可以读数据
@property(nonatomic, strong) NSString<Optional> *mastername; //主人名称
@property(nonatomic, assign) Gender gender;
optional 是有些字段是可选的。
如果字段有冲突可以用
+(JSONKeyMapper*)keyMapper
{
return [[JSONKeyMapper alloc] initWithDictionary:@{
@"uid": @"userId",
@"name": @"phone"
如果是一个字典
MXUser *user = [[MXUser alloc] initWithDictionary:userAttributes error:&error];
}];
}
如果是一个数组:
NSArray *categoryList = [QuestionCategory arrayOfModelsFromDictionaries:result error:&error];
+ (instancetype)sharedClient{
static APIClient *_sharedClient = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_sharedClient = [[APIClient alloc] initWithBaseURL:[NSURL URLWithString:kAPIBaseURLString]];
});
return _sharedClient;
}
+ (MXUser *)currentUser{
NSData *encodedUser = [[NSUserDefaults standardUserDefaults] objectForKey:@"user_key"];
MXUser *user = (MXUser *)[NSKeyedUnarchiver unarchiveObjectWithData:encodedUser];
return user;
}
类别:可以不需要继承,直接扩展方法,一般用于一些方法调用的方法
- (void)showText:(NSString*)str
{
MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
hud.removeFromSuperViewOnHide = YES;
hud.mode = MBProgressHUDModeText;
hud.labelText = str;
[hud hide:YES afterDelay:1.5];
}
3.SVPUllReFresh
self.refreshControl = [[UIRefreshControl alloc] init];
[self.refreshControl addTarget:self action:@selector(refreshData:) forControlEvents:UIControlEventValueChanged];
[_tableView addSubview:self.refreshControl];
[_tableView addInfiniteScrollingWithActionHandler:^{
NSInteger offsetId = 0;
if(weakSelf.messageMuArr.count>0){
UserMessage *temp = [weakSelf.messageMuArr lastObject];
offsetId = temp.id;
}
[weakSelf getListData:offsetId];
}];
[_tableView triggerInfiniteScrolling];
}
- (void)getListData:(NSInteger)page
{
[UserMessage messageListWithOffsetId:page success:^(NSArray *userMessageList, BOOL hasMore) {
if (0 == page) {
[_messageMuArr removeAllObjects];
}
[_messageMuArr addObjectsFromArray:userMessageList];
[_tableView reloadData];
[self.refreshControl endRefreshing];
[_tableView.infiniteScrollingView stopAnimating];
_tableView.showsInfiniteScrolling = hasMore;
} failure:^(NSError *error) {
[self showError:error];
[self.refreshControl endRefreshing];
[_tableView.infiniteScrollingView stopAnimating];
}];
}
//重用formatter
- (NSDateFormatter *)formatter {
if (! _formatter) {
_formatter = [[NSDateFormatter alloc] init];
_formatter.dateFormat = @"yyyy.MM.dd HH:mm:ss"; // twitter date format
}
return _formatter;
}
故事版
UIStoryboard* storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
// DogFriendsDetailViewController*dogFriendsVC = [storyboard instantiateViewControllerWithIdentifier:@"DogFriendsDetailViewController"];
[self.tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:selectedIndex inSection:0] animated:YES scrollPosition:UITableViewScrollPositionNone];
_dogImageView.layer.cornerRadius = 49;
_dogImageView.layer.masksToBounds = YES;
NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc] initWithString:kmStr];
[attrString addAttribute:NSFontAttributeName
value:[UIFont systemFontOfSize:20.0f]
range:NSMakeRange(kmStr.length-2, 2)];
[cell.kilometreLab setAttributedText:attrString];
__weak DogFriendsViewController *weakSelf = self; //block里面为弱引用
本地推送
JSONMOdel
@interface MXUser :JSONModel
这是一个可以讲json 数据转换为对象的三方库。很好用
只要模型的字段和接口的字段匹配就可以读数据
@property(nonatomic, strong) NSString<Optional> *mastername; //主人名称
@property(nonatomic, assign) Gender gender;
optional 是有些字段是可选的。
如果字段有冲突可以用
+(JSONKeyMapper*)keyMapper
{
return [[JSONKeyMapper alloc] initWithDictionary:@{
@"uid": @"userId",
@"name": @"phone"
如果是一个字典
MXUser *user = [[MXUser alloc] initWithDictionary:userAttributes error:&error];
}];
}
如果是一个数组:
NSArray *categoryList = [QuestionCategory arrayOfModelsFromDictionaries:result error:&error];
+ (instancetype)sharedClient{
static APIClient *_sharedClient = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_sharedClient = [[APIClient alloc] initWithBaseURL:[NSURL URLWithString:kAPIBaseURLString]];
});
return _sharedClient;
}
0 0
- 狗狗地图项目总结
- google地图项目总结
- 关于地图拍照上传项目的一些总结
- 项目---第三方API百度地图的使用总结
- 项目总结之百度地图定位的简单应用
- 基于环信和百度地图的一个项目总结
- 项目一:绘制地图
- 关于php项目的开发回顾总结第三章-----我与百度地图的渊源
- cocos2d 加载地图总结
- 百度地图开发总结
- ArcGIS10地图切片总结
- 百度地图总结
- ArcGIS10地图切片总结
- 地图控件编写总结
- 关于地图的总结
- 定位和地图总结
- 百度地图总结
- Google地图开发总结
- android 生成PhoneGap框架
- Unity里包裹Debug,且不影响Debug的重定向
- suffix tree pattern matching
- Input Core和evdev基本知识
- android checkbox多选删除
- 狗狗地图项目总结
- Java线程之两种方法Runnable和Thread的区别
- 生产环境MySQL Server核心参数的配置
- 黑马程序员——Java多线程—线程互斥—Lock
- 详细了解温度保险丝中的几个通用分类
- 如何将无限循环小数转换为分数
- 同步和异步的区别
- 数据库事务管理
- Android JNI 多线程