我已经能够使用下面的部分代码使listview显示单个数据字段。
NSMutableArray *array;
..
..
array = [[NSMutableArray alloc] init];
[array addObject:@"John Doe"];
但是我想保留几个字段,例如: 名称 ID 出生日期
我假设NSMutableArrary是一个NSString但是我需要类似于C中的结构来保存我需要的字段。
ID将被“隐藏”但我需要在用户点击该行时访问它。我如何访问ID和其他字段?如何进行设置,以便列表中包含信息?
有没有人有任何示例代码可以解释如何执行此操作?
编辑#1 :感谢您的评论,但我对iPhone太新了,真的需要找到有关如何执行此操作的示例代码。虽然评论听起来像是可以做到这一点,但我不知道从哪里开始。有人可以为3个字段的想法发布示例代码吗?
编辑#2 :到目前为止,我已尝试过所有内容,这是正确的方法,还是应该使用下面的提示?
Userrec.m
#import "UserRec.h"
@implementation Userrec
@synthesize Name, ID;
-(id)initWithName:(NSString *)n ID:(NSString *)d {
self.Name = n;
self.ID = d;
return self;
}
@end
UserRec.h
#import <UIKit/UIKit.h>
@interface Userrec : NSObject {
NSString *Name;
NSString *ID;
}
@property (nonatomic, retain) NSString *Name;
@property (nonatomic, retain) NSString *ID;
-(id)initWithName:(NSString *)n ID:(NSString *)d;
@end
UserList.m
@synthesize userrecs;
…
- (void)viewDidLoad {
[super viewDidLoad];
NSString *Name = @"Name";
NSString *ID = @"IID";
Userrec *userrec = [[Userrec alloc] initWithName:Name ID:ID ];
[userrecs addObject:userrec];
NSLog(@"Count %d",[userrecs count]);
[userrec release];
NSLog(@"Count %d",[userrecs count]);
}
在我添加对象并检查计数后它= 0.所以我假设出了什么问题?
答案 0 :(得分:1)
看一下NSMutableDictionary它似乎是您想要使用的确切内容
编辑: 这是一些示例代码
NSMutableArray *myData = [[NSMutableArray alloc] init];
NSMutableDictionary *myRow = [[NSMutableDictionary alloc] init];
[myRow setObject:@"John Doe" forKey:@"Name"];
[myRow setObject:@"4738" forKey:@"ID"];
[myRow setObject:@"1/23/45" forKey:@"DOB"];
[myData addObject:myRow];
[myRow release];
//Repeat from dictioanry alloc through release for each row you need to add
要在UITableView中显示它,您需要有一个UITableViewController类。在那里覆盖cellForRowAtIndexPath:
函数。这是该函数的简单实现
-(UITableViewCell*) tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSInteger row = [indexPath row];
static NSString *kCellID = @"cellID";
UITableViewCell *cell = nil;
cell = [tableView dequeueReuseableCellWithIdentifier:kCellID];
if ( cell == nil )
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:kCellID] autorelease];
}
NSMutableDictionary curRow = [myData objectAtIndex:row];
cell.textLabel.text = [curRow objectForKey:@"Name"];
return cell;
}
答案 1 :(得分:1)
NSMutableDictionary是最好的方式。您可以执行以下操作:
NSMutableDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"John Doe", @"Name", [NSNumber numberWithInt:5], @"ID", nil];
您可以使用相同的模板,甚至NSArray对象继续添加任意数量的字段。如果你有任何问题,我会查看文档。请记住,您只能存储指向NSDictionary中对象的指针。像
这样的事情
NSMutableDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"John Doe", @"Name", 5, @"ID", nil];
不起作用。祝你好运!