Как использовать объекты моделей вместо массивов и словарей? - PullRequest
1 голос
/ 05 июня 2011

Ниже приведен простой пример того, как я читаю из списка и отображаю данные в виде таблицы.Если бы я использовал объекты для представления своей модели, как бы я это сделал?

@interface RootViewController : UITableViewController {
    NSMutableArray *namesArray;
}
@property (nonatomic, retain) NSMutableArray *namesArray;
@end


@implementation RootViewController
@synthesize namesArray;

- (void)viewDidLoad{
    [super viewDidLoad];

    NSString *path = [[NSBundle mainBundle] pathForResource:@"names" ofType:@"plist"];

    NSMutableArray *tempArray = [[NSMutableArray alloc]initWithContentsOfFile:path];

    self.namesArray = tempArray;

    [tempArray release];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    return [namesArray count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }

    cell.textLabel.text = [namesArray objectAtIndex:indexPath.row];
    return cell;
}

Может кто-нибудь показать мне правильный способ построения моей модели в соответствии с шаблоном MVC для вышеуказанного сценария?Я предполагаю, что использовал бы синглтон для возврата набора Name объектов.Я в основном хочу узнать, как правильно использовать объекты Model для представления моих данных.

Ответы [ 2 ]

1 голос
/ 05 июня 2011

Модель в iOS MVC просто разделяет ваше приложение так, чтобы данные и алгоритмы приложения (Модель) были отделены от кода представления и обработки событий. Поэтому подумайте о создании нового класса Model, который получает, устанавливает и сохраняет ваше приложение data . Этот класс не должен знать о GUI.

Вот пример модели, которая упаковывает приложение алгоритмы путем обработки шифрования.

#import <Foundation/Foundation.h>
#import <CommonCrypto/CommonCryptor.h>
#import <CommonCrypto/CommonDigest.h>
#import <Security/Security.h>


@interface Model : NSObject {
}
+(id)modelGetInstance;
+(NSData *)getRandomIV:(NSInteger)numBytes;
-(id)init;
-(NSString*)encrypt:(NSString*)plainText password:(NSString*)pw; // public
-(NSString*)decrypt:(NSString*)cipherText password:(NSString*)pw;  // public
@end

Это похоже на ДВИГАТЕЛЬ-ИНТЕРФЕЙС UNIX. Это НЕ MVC Smalltalk, в котором представление напрямую обновляется изменениями в МОДЕЛИ (шаблон наблюдателя).

1 голос
/ 05 июня 2011

Если вы хотите использовать списки для хранения и более MVC-подобную модель для программирования, вам нужно написать функции преобразования из этой модели в простые структуры данных и наоборот. Например, если у вас была модель Person:

NSMutableArray* tempArray = [[NSMutableArray alloc]initWithContentsOfFile:path];
NSMutableArray* people = [Person personArrayFromDictionaryArray:tempArray];

Перед сохранением данных в plist-файле вам необходимо будет сериализовать данные обратно в простые структуры данных.

NSMutableArray* arrayToStore = [Person dictionaryArrayFromPersonArray:people];

Если вам просто нужно отслеживать список имен, лучше всего представить их в виде массива строк во всей программе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...