ios - 如何使用名称初始化数组?

时间:2013-06-04 12:11:04

标签: iphone ios objective-c nsarray

我是iPhone开发的新手,我想在数组中初始化字符串,如给定的格式

-(IBAction)btnSubmit:(UIButton *)sender
{
NSString *phone = phoneNumber.text;
NSLog(@"Phone  :%@",phone);
NSString *TxtUserName = userName.text;
NSString *TxtEmailId = emailId.text;
NSArray *details = [NSArray arrayWithObjects:TxtUserName,TxtEmailId,phone,nil]; 
}

我收到的详细信息:(     “XXXXXXX”,     “xxxxx@gmail.com”     7675 )

我想获取详细信息:(“Name = xxxx”,“Email = XXXxx @ gmail.com”,“Phone = 8786”)

有什么想法吗?提前谢谢。

12 个答案:

答案 0 :(得分:3)

初始化array,如

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

[dummyArr addObject @"Adam"];
[dummyArr addObject @"John"];

答案 1 :(得分:1)

使用NSDictionaryNSMutableDictionary:可以处理键值对

数组只能存储对象,你需要的是键值对机制

答案 2 :(得分:1)

NSDictionary就是您所需要的,但是如果您想要的是您在问题中指定的格式:

NSString *phone = NSString stringWithFormat:@"Phone=%@",phoneNumber.text];
NSLog(@"Phone  :%@",phone);
NSString *TxtUserName = [NSString stringWithFormat:@"Name=%@",userName.text];
NSString *TxtEmailId = [NSString stringWithFormat:@"Email=%@",emailId.text];
NSArray *details = [NSArray arrayWithObjects:TxtUserName,TxtEmailId,phone,nil]; 

此处提到的其他答案涉及使用NSDictionary / NSMutableDictionary的部分。

答案 3 :(得分:0)

你可以在下面做...

   dictMut=[[NSMutableDictionary alloc]init];
            [dictMut setObject:@"xxxx" forKey:@"Name"];
            [dictMut setObject:@"xxxx@gmail.com" forKey:@"email"];
            [dictMut setObject:@"8786" forKey:@"phone"];


            NSMutableArray *temp=[NSMutableArray alloc]init];
            [temp addObject:dictMut];

快乐编码!!!

答案 4 :(得分:0)

你能做的是:

NSDictionary *dictionary = @{@"name": userName.text, @"email":emailId.text};

如果您想更改对象,请使用NSMutableDictionary

答案 5 :(得分:0)

NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
[dict setObject:@"John" forKey:@"Firstname"];
[dict setObject:@"Doe" forKey:@"Lastname"];
[dict setObject:@"info at objectgraph.com" forKey:@"Email"];

NSLog(@"%@", dict);

NSArray *keys = [dict allKeys];

// values in foreach loop
for (NSString *key in keys) {
    NSLog(@"%@ is %@",key, [dict objectForKey:key]);
}

答案 6 :(得分:0)

NSDictionary *dict = [[NSDictionary alloc] init];
[dict setValue:TxtUserName forKey:@"Name"];
[dict setValue:TxtEmailId forKey:@"Email"];

将其取回:

[dict valueForKey:@"Name"];

答案 7 :(得分:0)

虽然使用字典是一个非常好的选择,但创建用于存储用户信息的模型类会更有用。您可以创建可以处理数据的方法,以获得更多的可重用性并保持简单。

@interface User : NSObject

@property (nonatomic, copy)   NSString *name;
@property (nonatomic, copy)   NSString *emailID;
@property (nonatomic, copy)   NSString *phoneNumber;

- (id)initWithName:(NSString *)name 
           emailID:(NSString *)emailID 
    andPhoneNumber:(NSString *)phoneNumber;

创建用户实例并设置值

-(IBAction)btnSubmit:(UIButton *)sender
{
   User *user = [User new];
   user.name = userName.text;
   user.emailID = emailId.text;
   user.phoneNumber = phoneNumber.text;

   //Use this instance for your work
}

答案 8 :(得分:0)

您可以将NSDictionary用于此类工作。你可以用这两种方法来做到这一点。

NSDictionary * = [NSDictionary dictionaryWithObjectsAndKeys:userName.text,@"Name",emailId.text,@"Email",phoneNumber.text,@"phone" nil];

或者你可以这样做。

NSMutableDictionary *eventData = [NSDictionary dictionaryWithObjectsAndKeys:userName.text,@"Name", nil];
[eventData setObject:emailId.text forKey:@"Email"];
[eventData setObject:phoneNumber.text forKey:@"phone"];

答案 9 :(得分:0)

尝试:

NSMutableDictionary* dict = [NSMutableDictionary new];

[dict setObject:@"Bob Jones" forKey:@"name"];
[dict setObject:@31337 forKey:@"number"];
[dict setObject:@"Turkey" forKey:@"location"];

或,简写:

NSDictionary dict = @{@"name": @"Bob Jones", @"number": @31337, @"location": @"Turkey"};

@31337[NSNumber numberWithInt:31337]的Objective-c简写,因为NSDictionary / NSMutableDictionary只能存储NSObject - 派生类。

在第一个示例中,您要定义一个空白NSMutableDictionary,然后向其中添加内容。在第二个中,您将创建一个常量,不可变,不可更改的字典,其中包含一些键和值。示例1和示例2中包含相同的数据,但您可以添加/删除第一个示例中的内容。

此外,NSMutableDictionaryNSDictionary的子类,这意味着您可以将其传递给接受NSDictionary的函数。你不能反过来。

答案 10 :(得分:0)

您可以使用NSDictionary来存储您需要的各个数据位,但您可能还想遵循MVC设计模式,这在Cocoa和Cocoa Touch框架中非常重要。

在MVC设计模式中,您尝试表示的数据是 Model ,因此,如果您正在对数据执行任何非常重要的操作,则需要创建一个或多个表示数据的对象,然后可以在您的应用程序周围传递并适当使用。

它将被声明为:

MyModel.h:

@interface MyModel : NSObject

@property (strong, readwrite) NSString *username;
@property (strong, readwrite) NSString *phoneNumber;
@property (strong, readwrite) NSString *emailAddress;

@end

在实施文件(MyModel.m)中,您甚至不必使用@synthesize,因为Apple认为打字过多。相反,现代clang编译器将代表您自动生成后备实例变量。请记住使用myobject.usernameself.username而不是简单地_username来引用这些属性。

然后,您可以考虑添加允许操作数据的方法。通过这种方式,您可以随时更改模型,而无需重新编写应用程序的重要部分,否则将依赖具有固定密钥名称的NSDictionary,这将简化应用程序的维护。< / p>

答案 11 :(得分:0)

首先将您的数据设置为NSMutableDictionary .........

Dic=[[NSMutableDictionary alloc]init];
            [Dic setObject:@"xxxx" forKey:@"Name"];
            [Dic setObject:@"xxxx@gmail.com" forKey:@"email"];
            [Dic setObject:@"8786" forKey:@"phone"];

然后从NSMutableDictionary ....

获取数据