Integrating Core Data with iOS(Integrating Core Data at iOS Startup)
맥OS의 응용이 유난히 긴 시간 동안 launch를 내놓았을 때 응답이 없는 상태가 되면 운영체제는 커서 표시 상태를 바꾼다.그리고 사용자는 프로그램이 시작되거나 종료될 때까지 기다릴 수 있습니다.
iOS에서는 이러한 개념이 없습니다.프로그램이 제한된 시간 안에 시작되지 않으면 운영체제가 자동으로 프로그램을 종료합니다.따라서 프로그램이 빨리 시작되는 것이 중요하다.
다른 한편, 응용 프로그램이 가능한 한 블록으로 코어 데이터에서 데이터를 저장하기를 원한다. 이것은 코어 데이터를 초기화하는 것은 응용 프로그램의 생명 주기의 첫 번째 단계에 두어야 한다는 것을 의미한다.비록 비전형이지만 코어 데이터는 가끔 초기화를 완성하는 데 더 많은 시간이 걸린다.
따라서 시스템이 종료되지 않도록 한 애플리케이션의 시작 순서를 두 단계로 나눌 수 있습니다.
iOS에서 Core Data(Initializing Core Data in iOS) 초기화
첫 번째는didFinishLaunchingWithOptions:어떻게 실현하는 방법을 바꾸는 것이다.응용 프로그램의didFinishLaunchingWithOptions: 방법에서는CoreData를 초기화할 수 있고 아주 적은 일을 고려할 수 있습니다.만약storyboard를 사용한다면, 이 방법에서 시작 그림을 계속 표시할 수 있습니다.
영구 저장 (NSPersistentStore) 을 영구 저장 조정원 (NSPersistentStore Coordinator) 에 추가하여 코어 데이터 초기화의 일부분으로 백엔드 대기열에 분배합니다.이 작업이 차지하는 시간은 알 수 없고, 홈 팀 열에서 이 작업을 실행하면 사용자 인터페이스가 막혀 프로그램이 종료될 수 있습니다.
영구 저장 (NSPersistentStore) 이 영구 저장 코디네이터 (NSPersistentStore Coordinator) 에 추가되면, 홈 열을 호출해서 사용자 인터페이스를 불러오고, 사용자를 보여줄 수 있습니다.
응용 프로그램 에이전트(Application Delegate)에서 Core Data(Separating Core Data the Application Delegate) 분리
이전에 iOS에서 응용 에이전트(Application Delegate)에서 코어 데이터 창고의 초기화는 전형적인 것이다.그러나 이로 인해 코드는 응용 생명 주기에 매우 혼란스러울 수 있다.
최상위 컨트롤러 (Controller) 대상에 코어 데이터 창고를 만들고, 이 컨트롤러 (Controller) 대상을 초기화하고 인용하도록 프로그램을 설정합니다.이 방식은 Core Data의 코드를 자체 컨트롤러 (Controller) 에서 통합시키고, 응용 프로그램 에이전트 (Application Delegate) 를 상대적으로 깨끗하게 합니다.이 독립된 컨트롤러 (Controller) 에는 코어 데이터 창고를 초기화하는 상세한 방법이 표시됩니다.
iOS app가 Core Data 스택에서 코드를 통합하기 위해 프로그램 에이전트(Application Delegate)에 컨트롤러(Ctroller) 속성(위에서 언급한 컨트롤러)을 추가할 수 있습니다.또한 애플리케이션 DidFinishLaunching: 이 라이프 사이클을 초기화합니다.
Objective-C
@interface AppDelegate : UIResponder
@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) DataController *dataController;
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[self setDataController:[[DataController alloc] initWithCompletionBlock:^{
//Complete user interface initialization
}]];
return YES;
}
Swift
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
var dataController: DataController!
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool {
dataController = DataController() {
//Complete user interface initialization
}
return true
}
단독 컨트롤러 (Controller) 대상을 초기화하면 코어 데이터 창고의 코드를 응용 프로그램 에이전트 (Application Delegate) 에서 옮길 수 있지만, 전체 응용 프로그램에서 코어 데이터에 접근할 수 있습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.