[iOS 개발] iOS 목록 페이지 데이터 관리
viewController
살 을 빼 는 과정 에서 얻 은 수확 으로 디자인 모델 을 고려 하지 않 습 니 다.더 좋 은 관리 방식 이 있다 면 교류 할 수 있 기 를 바 랍 니 다.감사합니다.처음
ViewController
에서 하나 NSMutableArray
와 currentPage
의 모든 데이터 와 페이지 관리 가 ViewController
안에 놓 여 있어 데이터 가 복잡 하고 유지 하기 어려워 다시 사용 할 수 없다 고 밝 혔 다.@property (nonatomic, copy) NSMutableArray *list; @property (nonatomic) NSInteger currentPage;
2. 진일보: 일정한 시간 을 개발 한 후에
ViewController
살 을 빼 는 동시에 데이터 의 실용성 을 높 여야 한 다 는 것 을 알 게 되 었 다.이 시기 에 하나의 DataList
데 이 터 를 관리 하고 데 이 터 를 분석 하 며 페이지 의 관 리 는 모두 하나의 데이터 류 에 단독으로 들어간다.DataList
는 기본 클래스 로 서 구체 적 인 데이터 계승 DataList
은 해당 하 는 하위 클래스 를 생 성 한다. 예 를 들 어 사용자 목록 이 있 으 면 해당 하 는 것 은 하나 UserList
계승 DataList
이다.다음은 DataList
의 실현 이다. //
// DataList.h
// PageControlDemo
//
// Created by brant on 2016/12/6.
// Copyright © 2016 wushujun. All rights reserved.
//
#import
@interface DataList : NSObject
@property (nonatomic) NSInteger currentPage; //
@property (nonatomic, strong) NSMutableArray *list; // list
@property (nonatomic) BOOL haveMore; //
@property (nonatomic) BOOL isRefresh; // , ,
/**
model list
,
@param array
*/
- (void)loadDataFromArray:(NSArray *)array;
/**
@param index
@return , nil
*/
- (id)objectAtIndex:(NSInteger)index;
/**
@param object
*/
- (void)addObject:(id)object;
/**
*/
- (void)removeAll;
@end
DataList.m
//
// DataList.m
// PageControlDemo
//
// Created by brant on 2016/12/6.
// Copyright © 2016 wushujun. All rights reserved.
//
#import "DataList.h"
@implementation DataList
/**
model list
,
@param array
*/
- (void)loadDataFromArray:(NSArray *)array {
_currentPage++;
// , ,
if (_isRefresh) {
[self removeAll];
self.currentPage = 0; // , 1
}
if (array == nil || array.count <= 0) {
_haveMore = NO;
return;
}
}
- (id)objectAtIndex:(NSInteger)index {
if (self.list.count > index) {
return self.list[index];
}
return nil;
}
- (void)addObject:(id)object {
[self.list addObject:object];
}
- (void)removeAll {
if (_list) {
[_list removeAllObjects];
}
}
# pragma mark - getters
- (NSMutableArray *)list {
if (!_list) {
_list = [[NSMutableArray alloc] init];
}
return _list;
}
@end
UserList. m Load 데 이 터 를 다시 쓰 는 방법
//
// UserList.m
// PageControlDemo
//
// Created by sjwu on 2016/12/6.
// Copyright © 2016 wushujun. All rights reserved.
//
#import "UserList.h"
#import "User.h"
@implementation UserList
- (void)loadDataFromArray:(NSArray *)array {
[super loadDataFromArray:array];
// array
if (array.count > 0) {
for (NSDictionary *dic in array) {
User *user = [User new];
// user
[user loadDataFromDictionary:dic];
[self.list addObject:user];
}
}
}
@end
3. 그리고 나중에...
회전 model
, model
회전
의 라 이브 러 리 를 썼 고 수 동 해석 model
은 다시 하지 않 았 다. 처음에 JSONModel
부터 최근 에 사용 한 YYModel
까지 이 라 이브 러 리 들 은 대부분의 분석 코드 를 줄 이 고 코드 를 판단 할 수 있다.YYModel
, JSONModel
다 중 스 레 드 기록 시 동기 화 되 지 않 아 crash 가 발생 할 수 있 습 니 다.(2017.03.05 업데이트)
4. MVVM 모드, ViewModel 관리 페이지
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.