Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 目标c在视图控制器之间解析XML数据_Ios_Objective C_Xml_Nsxmlparser - Fatal编程技术网

Ios 目标c在视图控制器之间解析XML数据

Ios 目标c在视图控制器之间解析XML数据,ios,objective-c,xml,nsxmlparser,Ios,Objective C,Xml,Nsxmlparser,我对objective-c相当陌生,需要一些挑战技巧 我有2个视图控制器,需要将从FirstViewController检索到的xml数据显示给TermsViewController 我成功地获得了用户输入并检索了所需的xml对象。 但是不知道如何在TermsViewController.m中显示用户名 #import "FirstViewController.h" #import "TermsViewController.h" #import "XMLReader.h" @interfac

我对objective-c相当陌生,需要一些挑战技巧

我有2个视图控制器,需要将从FirstViewController检索到的xml数据显示给TermsViewController

我成功地获得了用户输入并检索了所需的xml对象。 但是不知道如何在TermsViewController.m中显示用户名

#import "FirstViewController.h"
#import "TermsViewController.h"
#import "XMLReader.h"


@interface FirstViewController ()

@property (nonatomic, strong) NSMutableURLRequest *postRequest;
@property NSUInteger responseStatusCode;
@property (nonatomic, strong) NSString *theXML;

@end

@implementation FirstViewController


- (void)viewDidLoad {
    [super viewDidLoad];
}

- (IBAction)accessButton:(UIButton *)sender {
self.codeUser = self.codeField.text;

NSString *xmlCode = [NSString stringWithFormat:
                      @"<?xml version='1.0' encoding='utf-8'?>\n"
                      "<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'>"
                      "<soap:Body>\n"
                      "<GetInterview xmlns='http://www.url.com/url.JCV'>\n"
                      "<Codigo>"
                      "%@"
                      "</Codigo>\n"
                      "</GetInterview>\n"
                      "</soap:Body>\n"
                      "</soap:Envelope>", self.codeUser];

NSLog(@"User code is: %@", self.codeUser);
NSLog(@"XML is: %@", xmlCode);

self.postRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://www.url.com/url.JCV/web.url.asmx"]];

[self.postRequest setValue:@"text/xml" forHTTPHeaderField:@"Content-Type"];
[self.postRequest setHTTPMethod:@"POST"];
[self.postRequest setHTTPBody:[NSMutableData dataWithBytes:[xmlCode UTF8String] length:strlen([xmlCode UTF8String])]];

NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:self.postRequest delegate:self];

if (conn) {
    NSLog(@"Connected to: %@", conn);
} else {
    NSLog(@"Connection Error");
}

[self.codeField resignFirstResponder];

}
#import "TermsViewController.h"

@interface TermsViewController ()

@end

@implementation TermsViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    self.nameLabel.text = self.nameUserTerms;

    //this check is returning NULL
    NSLog(@"User name: %@", self.nameUserTerms);

}

@end
由于数据是异步下载的,因此无法确定如何在IOS 6上实现此功能

提前谢谢

FirstViewController.h

#import <UIKit/UIKit.h>

@interface FirstViewController : UIViewController

@property (weak, nonatomic) IBOutlet UIButton *accessButton;
@property (weak, nonatomic) IBOutlet UITextField *codeField;
@property (weak, nonatomic) NSString *codeUser;
@property (strong, nonatomic) NSString *nameUser;
@property (strong, nonatomic) NSDictionary *xmlDictionary;

@end
#import <UIKit/UIKit.h>

@interface TermsViewController : UIViewController

@property (weak, nonatomic) IBOutlet UILabel *nameLabel;
@property (strong, nonatomic) NSString *nameUserTerms;

@end
TermsViewController.m

#import "FirstViewController.h"
#import "TermsViewController.h"
#import "XMLReader.h"


@interface FirstViewController ()

@property (nonatomic, strong) NSMutableURLRequest *postRequest;
@property NSUInteger responseStatusCode;
@property (nonatomic, strong) NSString *theXML;

@end

@implementation FirstViewController


- (void)viewDidLoad {
    [super viewDidLoad];
}

- (IBAction)accessButton:(UIButton *)sender {
self.codeUser = self.codeField.text;

NSString *xmlCode = [NSString stringWithFormat:
                      @"<?xml version='1.0' encoding='utf-8'?>\n"
                      "<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'>"
                      "<soap:Body>\n"
                      "<GetInterview xmlns='http://www.url.com/url.JCV'>\n"
                      "<Codigo>"
                      "%@"
                      "</Codigo>\n"
                      "</GetInterview>\n"
                      "</soap:Body>\n"
                      "</soap:Envelope>", self.codeUser];

NSLog(@"User code is: %@", self.codeUser);
NSLog(@"XML is: %@", xmlCode);

self.postRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://www.url.com/url.JCV/web.url.asmx"]];

[self.postRequest setValue:@"text/xml" forHTTPHeaderField:@"Content-Type"];
[self.postRequest setHTTPMethod:@"POST"];
[self.postRequest setHTTPBody:[NSMutableData dataWithBytes:[xmlCode UTF8String] length:strlen([xmlCode UTF8String])]];

NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:self.postRequest delegate:self];

if (conn) {
    NSLog(@"Connected to: %@", conn);
} else {
    NSLog(@"Connection Error");
}

[self.codeField resignFirstResponder];

}
#import "TermsViewController.h"

@interface TermsViewController ()

@end

@implementation TermsViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    self.nameLabel.text = self.nameUserTerms;

    //this check is returning NULL
    NSLog(@"User name: %@", self.nameUserTerms);

}

@end

您应该使用
prepareforsgue
在控制器之间交换数据

从代码中删除以下行:

TermsViewController *nv = [[TermsViewController alloc] init];
nv.nameUserTerms = self.nameUser;
把它们放在这样一个方法中:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"goToTerms"]) {
        TermsViewController *nv = segue.destinationViewController;
        nv.nameUserTerms = self.nameUser;
    }
}

让它工作起来。我需要设置TermsViewController*nv=segue.destinationViewController;正如你所说。谢谢