5.5 Màn Hình Runtime
5.5.9 Save LoadProject Trong Runtime
Save Project:
Mỗi khi tạo một đối tượng ta đều thực hiện phương thức
:"[runTimeDisplay.displayTags.displayTag addObject:progressCreated]" để cập nhật dữ liệu của mỗi đối tượng lên cây dữ liệu.
Load Project:
Mọi thủ tục load project đều được thực hiện trong phương thức :"-(void) loadProject" tại đây ta phải xoá toàn bộ dữ liệu cũ trên view bằng các phương thức:
Ngoài ra ta phải kiểm tra và gán Display thuộc kiểu RUNTIMEFORM vào cây dữ liệu.
"[self removeAllDesignObjectAndGesture]; //Remove toàn bộ đối tượng cùng với GestureRecognizer đi kèm trên view
[self initVariable];"
Page 75
Phương thức đầu tiên "[ProjectParser takeDisplayFromProject:mainDelegate.project
displayType:RUNTIMEFORM]" để trả về địa chỉ một đối tượng Display có kiểu display là RUNTIMEFORM gán vào con trỏ runTimeDisplay. Sau đó ta kiểm tra xem địa chỉ trả về có chỉ tới đối tượng nào không nếu không ta phải tạo ra đối tượng Display mới với kiểu display là RUNTIMEFORM để lưu vào cây dữ liệu. Chú ý là từ bây giờ địa chỉ của con trỏ
runTimeDisplay đã được lưu vào dữ liệu trung tâm nên mọi thay đổi của đối tượng được con trỏ runTimeDisplay sẽ được cập nhật trực tiếp lên cây dữ liệu trung tâm.
Sau khi đã lấy được dữ liệu của đói tượng Display trên cây dữ liêu trung tâm ta tiến hành kiểm tra đối tượng được lưu trử trong mảng DisplayTag là đối tượng thuộc Class nào để lấy các đối tượng đó ra và gán các GestureRecognizer tương ứng.
Phương thức kiểm tra đối tượng:
for (Display *display inmainDelegate.project.displays.display) { if (display.displayType == RUNTIMEFORM) {
for (int j=0; j<display.displayTags.displayTag.count;j++ ) {
NSDictionary *displayTagTemp = [display.displayTags.displayTag
objectAtIndex:j];
if ([displayTagTemp isKindOfClass:[TextField class]]){
runTimeDisplay = [ProjectParser takeDisplayFromProject:mainDelegate.project
displayType:RUNTIMEFORM]; if (runTimeDisplay == nil) {
runTimeDisplay = [[Display alloc] initWithName:@"Run Time" displayType:RUNTIMEFORM period:@"0.5" displayTags:nil]; runTimeDisplay.displayTags = [[DisplayTags alloc] init];
Page 76