我已经在iOS(obj-c)移动应用程序内部构建了一个自定义Messenger,该Messenger永远需要将数据发送到数据库。我现在的设置方式:当用户点击“发送”按钮时,应用程序开始将必要的数据(他们输入到uitextfield中的消息,发送用户ID,名字,姓氏……)发布到后端数据库(它将内容发布到Drupal CMS)。也就是说,完成此操作需要花费10到15秒,这太长了。
有人对我如何加快此过程有任何建议吗?看看下面的代码:
ViewController.m
- (IBAction)sendReply:(id)sender {
_sendButton.enabled = NO;
NSString *sentText = self.replyField.text;
if ([self.messageData count] > 0) {
[self.sendButton setTitleColor:[UIColor colorWithRed:178/255.0 green:178/255.0 blue:178/255.0 alpha:1.0] forState:UIControlStateNormal];
self.activityIndicatorSend.hidden = NO;
[self.activityIndicatorSend startAnimating];
NSMutableDictionary *nodeData = [NSMutableDictionary new];
[nodeData setObject:@"messages" forKey:@"type"];
NSDictionary *messageValues = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:sentText, nil] forKeys:[NSArray arrayWithObjects:@"value", nil]];
NSDictionary *finalMessage = [NSDictionary dictionaryWithObject:[NSArray arrayWithObject:messageValues] forKey:@"und"];
[nodeData setObject:finalMessage forKey:@"body"];
self.replyField.text = @"";
NSString *targetedUser = [self.messageData objectForKey:@"uid"];
NSDictionary *targetMessage = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:targetedUser, nil] forKeys:[NSArray arrayWithObjects:@"value", nil]];
NSDictionary *finalUser = [NSDictionary dictionaryWithObject:[NSArray arrayWithObject:targetMessage] forKey:@"und"];
[nodeData setObject:finalUser forKey:@"field_targetuser"];
NSDictionary *userDictInfo = (NSDictionary*) [NSKeyedUnarchiver unarchiveObjectWithData:[[NSUserDefaults standardUserDefaults] objectForKey:@"diosSession"]];
DIOSSession *session = [DIOSSession sharedSession];
[session setUser:userDictInfo];
[session user];
[nodeData setValue: @"Re:" forKey:@"title"];
[DIOSNode nodeSave:nodeData success:^(AFHTTPRequestOperation *operation, id responseObject) {
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"Message sent successfully!");
self.sendButton.hidden = NO;
self.activityIndicatorSend.hidden = YES;
[self updateMessages];
});
self.replyField.text = @"";
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Node did not save!");
}];
}