我尝试使用MFMessageComposer为用户预填充短信。我正在尝试使用存储在可变数组中的变量并使用该数字预先填充电话号码。但是,它不能在接收方部分使用下面的代码。我尝试将其更改为字符串,将其添加到数组中。手机什么都不做。
但如果我使用@ [@" 123132131235"]进行手动编号;对于收件人来说,它会起作用。
- (IBAction)smsSend:(id)sender {
{
MFMessageComposeViewController *controller = [[MFMessageComposeViewController alloc] init];
[controller setMessageComposeDelegate:self];
if([MFMessageComposeViewController canSendText])
{
controller.recipients = [[NSArray alloc] initWithObjects:[Detail valueForKey:@"Phone"], nil];
NSLog(@"%@",[Detail valueForKey:@"Phone"]);
controller.body = @"Hello testing";
[self presentViewController:controller animated:YES completion:NULL];
} else {
NSLog(@"cannot send");
}
}
}
请帮帮我。
干杯, 贝。
答案 0 :(得分:0)
试试这个:
- (IBAction)smsSend:(id)sender
{
{
MFMessageComposeViewController *controller = [[MFMessageComposeViewController alloc] init];
[controller setMessageComposeDelegate:self];
if([MFMessageComposeViewController canSendText])
{
controller.recipients = [NSArray arrayWithObjects:[Detail valueForKey:@"Phone"], nil];
controller.body = @"Hello testing";
[self presentViewController:controller animated:YES completion:NULL];
}
else
{
NSLog(@"cannot send");
}
}
}
我所做的唯一改变是收件人数组分配。收件人数组不是您拥有的数组,因此您应该直接使用对象初始化数组而不是[NSArray alloc]
。
initWithObject
返回一个保留计数为1的数组,即您拥有该数组,并且必须在某个时刻释放它以防止内存泄漏。
arrayWithObject
会返回一个自动释放的数组,因此您不必担心在不再需要它时将其释放(但如果将其存储在实例变量中,则应保留它以防止释放自动释放池)