OGeek|极客世界-中国程序员成长平台

标题: iphone - UITableview 和数据源作为 NSMutableArray [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 11:43
标题: iphone - UITableview 和数据源作为 NSMutableArray

我是 iOS 开发新手,我学习了一个简单的 UITableview 和详细 View 的教程。

这设置了我的数组:

- (void)viewDidLoad
{
    [self setupArray];
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

- (void)setupArray
{
    states = [[NSMutableDictionary alloc]init];
    [states setObject"Thing 1" forKey"Subject 1"];
    [states setObject"Thing 2" forKey"Subject 2"];
    [states setObject"Thing 3" forKey"Subject 3"];
    [states setObject"Thing 4" forKey"Subject 4"];

    datasource = [states allKeys];
}

我有工作单元和详细 View 。如何向我的键添加更多对象?那可能吗?我需要每个主题 [key] 具有许多属性(即事物、人、地点、颜色)...

你能把它分解成对我来说最简单的术语吗?谢谢!



Best Answer-推荐答案


我不确定我是否理解您的问题,但每个键只能有一个与之关联的对象。在您的情况下,您使用的是 NSString 对象。如果您将 NSString 替换为您创建的某个对象,例如 AnObjectWithAThingAndAPersonAndAPlace,您可以有多个与每个键关联的属性。


我想我现在明白你想要什么了。你想要的不是一个带有与之关联的数组的对象,而是一个对象数组。你可以用 NSDictionary 对象来做到这一点。

- (void)setupArray
{
    NSMutableArray *objectArray = [[NSMutableArray alloc] init];

    NSMutableDictionary *object1 = [[NSMutableDictionary alloc] init];
    [object1 setObject"Apple" forKey"thing"];
    [object1 setObject:@"Alex" forKey:@"person"];
    [object1 setObject:@"Alabama" forKey:@"place"];
    [object1 setObject:@"Azure" forKey:@"color"];
    [objectArray addObjectbject1];

    NSMutableDictionary *object2 = [[NSMutableDictionary alloc] init];
    [object2 setObject:@"Banana" forKey:@"thing"];
    [object2 setObject:@"Bill" forKey:@"person"];
    [object2 setObject:@"Boston" forKey:@"place"];
    [object2 setObject:@"Blue" forKey:@"color"];
    [objectArray addObjectbject2];

    datasource = [NSArray arrayWithArraybjectArray];
}

然后在你的 UITableViewDataSource 方法中

- (UITableViewCell *)tableViewUITableView *)tableView cellForRowAtIndexPathNSIndexPath *)indexPath
{
    NSInteger row = [indexPath row];        
    NSDictionary *object = [datasouce objectAtIndex:row];

    ...

}

您可以检索该对象的所有字符串。

如果我要做这样的事情,我可能会创建一个包含数组的 plist 文件。那么你的 setupArray 方法可能如下所示:

- (void)setupArray
{
    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"YourFileName" ofType:@"plist"];
    NSDictionary *plistData = [NSDictionary dictionaryWithContentsOfFile:filePath]; 
    datasource = (NSArray*)[plistData objectForKey:@"ObjectsForTableView"];
}

虽然我会添加更多评论...如果不是很明显,您添加到字典中的对象不必是 NSString,它们可以是任何对象,例如 NSNumber,对于您的棒球运动员,可能对您有用。此外,您可能希望创建自定义播放器对象而不是使用 NSDictionary。而且您可能希望拥有一个存储和检索播放器的核心数据数据库(而不是硬编码它们或从 plist 文件中获取它们)。不过,我希望我的回答能让你走上正确的道路。

关于iphone - UITableview 和数据源作为 NSMutableArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9343496/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://sqlite.in/) Powered by Discuz! X3.4