NSMutableArray в пределах NSString - PullRequest
       22

NSMutableArray в пределах NSString

0 голосов
/ 27 апреля 2011

После 10 лет без программирования (в то время в Delphi) я начал изучать Objective-C.Признаюсь, я столкнулся с множеством проблем, так как этот подход сильно отличается.

Я хочу создать простую таблицу, в которой каждая строка состоит из нескольких переменных NSString.Пример:

ID Firstname Lastname

01  FN1        LN1

02  FN2        LN2

Моя таблица:

NSString * FirstName, * LastName;

NSMutableArray * person = [NSMutableArray arrayWithObjects: firtsname, lastname, nil];

Проблема в том, что я не могу добавить строку с 2 NSString, например:

FirstName = @ "FN1";

LastName = @ "LN1";

[person AddObject: FirstName, LastName]; 

FirstName = @ "FN2";

LastName = @ "LN2";

[person AddObject: FirstName, LastName]; 

//etc. ...

Я знаю, что AddObject может добавить только 1 объект, но это должно объяснить концепцию моего примера.

Как я могу добавить 2 объекта одновременно, как в моем примере?

тогда,как я могу управлять / получать объекты NString "1" (firstName) и NString "2" (lastName) по индексу (i);

Признаюсь, я не могу найти логику развития, и ваши ответы будуточень полезно.

Большое спасибо за ваш ответ.


РЕДАКТИРОВАТЬ:

У меня странная проблема.Мой .m:

Person *pers = [[Person alloc]init];

NSMutableArray *myarray = [[NSMutableArray alloc] init];

[pers setFirstName:@"FN 1"]; // = pers.firstName;
[pers setLastName:@"LN 1"]; // = pers.lastName;
[myarray addObject:pers];

[pers setFirstName:@"FN 2"];
[pers setLastName:@"LN 2"];
[myarray addObject:pers];

[pers release];

NSLog(@"count: %d", [myarray count]);

for(int i = 0; i < [myarray count]; i++)
    {
    pers = [myarray objectAtIndex:i];
    NSLog(@"%d %@ %@ %@", i, pers, pers.firstName, pers.lastName);
    }

[myarray release];

и мой NSLog: 2011-04-27 19: 07: 57.582 temp [11724: 903] count: 2

2011-04-27 19:07: 57,584 темп [11724: 903] 0 FN 2 LN 2

2011-04-27 19: 07: 57,585 темп [11724: 903] 1 FN 2 LN 2

Как вы можетевидите, у меня есть FN 2 LN 2 дважды.Объект "pers" имеет дважды одинаковое значение

Normal?

Ответы [ 2 ]

2 голосов
/ 27 апреля 2011

Самый простой способ сделать это - запустить очень простой класс модели:

"Person.h"

#import <Foundation/Foundation.h>

@interface Person : NSObject {
    NSString *firstName;
    NSString *lastName;
}

@property (readwrite, copy) NSString *firstName;
@property (readwrite, copy) NSString *lastName;

@end

"Person.m"

#import "Person.h"

@implementation Person

@synthesize firstName, lastName;

- (void)dealloc
{
    [firstName release];
    firstName = nil;

    [lastName release];
    lastName = nil;

    [super dealloc];
}

@end

Это позволит вам использовать addObject:, поскольку технически это будет один объект, вы просто сможете хранить в нем несколько фрагментов данных. Вот пример:

//...
Person *p1 = [[Person alloc] init];
[p1 setFirstName:@"First Name"];
[p2 setLastName:@"Last Name"];

[personArray addObject:p1];
[p1 release];
//...

Если вы не знакомы с @property или @synthesize, я бы порекомендовал эту статью, объясняя оба варианта .


В ответ на редактирование вы сможете получить значения, используя что-то вроде следующего:

Person *peep = [personArray objectAtIndex:i];
NSString *firstName = [peep firstName]; //or you could use peep.firstName;
NSString *lastName = [peep lastName];
1 голос
/ 27 апреля 2011

Попробуйте это:

NSDictionary *person = [[NSDictionary alloc] initWithObjectsAndKeys:
                        @"Bill", @"Firstname", 
                        @"Gates", @"Lastname", nil];
NSMutableArray *storage = [[[NSMutableArray alloc] init] autorelease];
[storage addObject:person];
[person release];
...