2011-04-26 71 views
0

經過10年沒有編程(當時在德爾福),我開始學習 Objective-C。我承認我遇到了很多問題,因爲這種方法非常不同。NSString中的NSMutableArray

我想做一個簡單的表格,其中每行包含幾個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)by index(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臨時[11724:903]數: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」具有兩倍相同的值

正常嗎?

回答

2

這樣做會炮製出一個非常簡單的模型類的最簡單方法:

「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我會recommend this article explaining both


針對編輯,你就可以使用類似下面的值來獲得:

Person *peep = [personArray objectAtIndex:i]; 
NSString *firstName = [peep firstName]; //or you could use peep.firstName; 
NSString *lastName = [peep lastName]; 
+0

@邁克爾:你應該更新你的問題要包括你的新代碼,並將你的新問題作爲評論加入,而不是像這樣編輯答案。 – 2011-04-27 23:29:41

+0

不要忘記你的'-dealloc'方法... – 2011-04-27 23:48:45

+0

@Dave更新。我還爲問題的新部分添加了一個編輯。 – 2011-04-28 00:04:20

1

試試這個:

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