初始化使用NSArray的对象Array [英] Initialize Array of Objects using NSArray

查看:237
本文介绍了初始化使用NSArray的对象Array的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是pretty新的Objective-C和iOS所以我一直在选择器视图玩耍。我定义了一个Person类,这样,当你创建一个新的人,它会自动给此人的姓名和年龄。

 #进口Person.h@implementation人@synthesize PERSONNAME,年龄; - (ID)的init
{
    自= [超级初始化]
    如果(个体经营)
    {
        PERSONNAME = [个体经营randomName]
        年龄= [个体经营randomAge]
    }    返回自我;
} - (的NSString *)randomName
{
    * NSString的名称;
    NSArray的* nameArr = [NSArray的arrayWithObjects:@吉尔情人节,@彼得·格里芬,@梅格格里芬,@杰克Lolwut
                            @迈克Roflcoptor,@辛迪·伍兹,@杰西卡风车,@亚历山大大帝,
                            @莎拉·彼得森,@斯科特Scottland,@杰夫芬达,@阿曼达教皇,@迈克尔·迈尔斯
                            @理查德Biggus,@Montey Python的@迈克武汉理工大学,@冒充者,@椅子,
                            零];
    NSUInteger randomIndex = arc4random()%[nameArr计数]
    命名= [nameArr objectAtIndex:randomIndex];
    返回名称;
} - (NSInteger的*)randomAge
{
    //下界+ arc4random()%(上界 - 下界);
    NSInteger的* NUM =(NSInteger的*)(1 + arc4random()%(99 - 1));    返回NUM;
}@结束

现在我想打的人组成的数组,所以我可以抛出一堆入选择器,挑一个人,并显示他们的年龄。首先,虽然我需要的人的数组。如何使对象数组初始化并对其进行分配?


解决方案

 的NSMutableArray *人= [NSMutableArray的阵列]
的for(int i = 0; I< myPersonsCount;我++){
   [人ADDOBJECT:[[人页头]初始化];
}
NSArray的* arrayOfPersons = [NSArray的arrayWithArray:人]; //如果你想一成不变的数组

你也可以不使用的NSMutableArray达到这个:

 的NSArray *人= [NSArray的阵列]
的for(int i = 0; I< myPersonsCount;我++){
   人= [人arrayByAddingObject:[[人页头]初始化];
}

还有一件事 - 这是有效的ARC启用的环境中,如果你要使用它,而不ARC不要忘了自动释放对象添加到数组!

  [人ADDOBJECT:[[[人页头] INIT]自动释放];

I'm pretty new to Objective-C and iOS so I've been playing around with the Picker View. I've defined a Person Class so that when you create a new Person it automatically gives that person a name and age.

#import "Person.h"

@implementation Person

@synthesize personName, age;

-(id)init
{
    self = [super init];
    if(self)
    {
        personName = [self randomName];
        age = [self randomAge];
    }

    return self;
}

-(NSString *) randomName
{
    NSString* name;
    NSArray* nameArr = [NSArray arrayWithObjects: @"Jill Valentine", @"Peter Griffin", @"Meg Griffin", @"Jack Lolwut",
                            @"Mike Roflcoptor", @"Cindy Woods", @"Jessica Windmill", @"Alexander The Great",
                            @"Sarah Peterson", @"Scott Scottland", @"Geoff Fanta", @"Amanda Pope", @"Michael Meyers",
                            @"Richard Biggus", @"Montey Python", @"Mike Wut", @"Fake Person", @"Chair",
                            nil];
    NSUInteger randomIndex = arc4random() % [nameArr count];
    name = [nameArr objectAtIndex: randomIndex];
    return name;
}

-(NSInteger *) randomAge
{
    //lowerBound + arc4random() % (upperBound - lowerBound);
    NSInteger* num = (NSInteger*)(1 + arc4random() % (99 - 1));

    return num;
}

@end

Now I want to make an array of Persons so I can throw a bunch into the picker, pick one Person and show their age. First though I need to make an array of Persons. How do I make an array of objects, initialize and allocate them?

解决方案

NSMutableArray *persons = [NSMutableArray array];
for (int i = 0; i < myPersonsCount; i++) {
   [persons addObject:[[Person alloc] init]];
}
NSArray *arrayOfPersons = [NSArray arrayWithArray:persons]; // if you want immutable array

also you can reach this without using NSMutableArray:

NSArray *persons = [NSArray array];
for (int i = 0; i < myPersonsCount; i++) {
   persons = [persons arrayByAddingObject:[[Person alloc] init]];
}

One more thing - it's valid for ARC enabled environment, if you going to use it without ARC don't forget to add autoreleased objects into array!

[persons addObject:[[[Person alloc] init] autorelease];

这篇关于初始化使用NSArray的对象Array的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆