我正在编写一个包含两个UITextField和一个UIButton的简单程序,当我按下UIButton时,调用一个方法,该方法的编码如下
-(void) saveData{
restaurant_name_save = restaurant_name_textfield.text;
amount_name_save = amount_textfield.text;
order = [[NSMutableArray alloc] initWithObject: restaurant_name_save, amount_name_save, nil];
NSLog(@"%@", order);
UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"warning" message:[NSString stringWithFormat:@"%d",[order count]] delegate:nil cancelButtonTitle:@"ok" otherButtonTitles:nil];
[alert show];
[alert release];
}
在NSLog中,两个UITextField数据都正常显示,但在UIAlertView中,它显示为2,即使我更改数据并再次按下按钮...
我应该怎么做,我只想在NSMutableArray中保存每次数据,因为我按下按钮,
请帮忙......
答案 0 :(得分:1)
我可能会在这里遗漏一些东西但是
它说[order count]
:
UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"warning"
message:[NSString stringWithFormat:@"%d",[order count]]
delegate:nil cancelButtonTitle:@"ok" otherButtonTitles:nil];
[order count]
的输出将为2,因为数组中有两个条目。
我会假设你看到你编写的数组的内容
stringWithFormat:@"%@", order
答案 1 :(得分:0)
你可能有一个错字。请尝试使用-initWithObjects:
:
order = [[NSMutableArray alloc] initWithObjects: restaurant_name_save, amount_name_save, nil];
在重复运行时,还要确保release
成员变量order
并将其设置为nil
,然后再进行+alloc
和-initWithObjects:
次呼叫:
if (order) {
[order release], order = nil;
}
order = [[NSMutableArray alloc] initWithObjects: restaurant_name_save, amount_name_save, nil];
...
更好的是,不要在此方法中重复使用+alloc
和-initWithObjects:
,但在此方法之外(可能在较大对象的init
方法中)创建NSMutableArray
容量2:
self.order = [[[NSMutableArray alloc] initWithCapacity:2] autorelease];
在处理按钮操作的方法中,将项目设置为各自的索引:
[order replaceObjectAtIndex:0 withObject:restaurant_name_textfield.text];
[order replaceObjectAtIndex:1 withObject:amount_textfield.text];
答案 2 :(得分:0)
如果我正确地关注了您,那么每次按下屏幕上的按钮时,您希望有一个阵列可以存储restaurant_name_save
和amount_name_save
。 (我假设此按钮调用saveData
方法?
在这种情况下,重新分配数组将首先清除其中的所有对象,然后将两个字符串添加到其中。您应该将数组声明为类变量,然后执行
[order addObject:string1];
[order addObject:string2];
修改强>
你在分配它吗?这是一种简单的方法,您可能需要修改它以满足您的需求 -
标题文件:
@interface WelcomeScreen : UIViewController {
NSMutableArray *array;
}
@property (nonatomic, retain) NSMutableArray *array;
-(IBAction) saveData:(id) sender;
源文件
@synthesize array;
-(void) viewDidLoad {
array = [[NSMutableArray alloc] init];
}
// Make the UIButton's tap option point to this -
-(IBAction) saveData:(id) sender
{
[array addObject:string1];
[array addObject:string2];
// alert.
}
答案 3 :(得分:0)
使用initWithObjects
代替initWithObject
并且总是在数组中设置两个对象,并且您正在打印数组的计数,这就是它始终显示为2的原因。
您编写的所有其他代码都是正确的。