使用json从本地文件传递数据

我试图将数据从我的JSON文件传递到一个简单的ViewController,但我不知道在哪里实际传递该数据。 我可以只添加到我的setDataToJson方法,还是可以在viewDidLoad方法中添加数据?

这是我的代码

 @interface NSDictionary(JSONCategories) +(NSDictionary*)dictionaryWithContentsOfJSONString:(NSString*)fileLocation; @end @implementation NSDictionary(JSONCategories) +(NSDictionary*)dictionaryWithContentsOfJSONString:(NSString*)fileLocation{ NSData* data = [NSData dataWithContentsOfFile:fileLocation]; __autoreleasing NSError* error = nil; id result = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error]; if (error != nil) return nil; return result; } @end @implementation ViewController @synthesize name; - (void)viewDidLoad { [super viewDidLoad]; } -(void)setDataToJson{ NSDictionary *infomation = [NSDictionary dictionaryWithContentsOfJSONString:@"Test.json"]; name.text = [infomation objectForKey:@"AnimalName"];//does not pass data } 

问题是您尝试检索文件的方式。 为了做到正确,你应该首先找到它在捆绑中的路径。 尝试这样的事情:

 +(NSDictionary*)dictionaryWithContentsOfJSONString:(NSString*)fileLocation{ NSString *filePath = [[NSBundle mainBundle] pathForResource:[fileLocation stringByDeletingPathExtension] ofType:[fileLocation pathExtension]]; NSData* data = [NSData dataWithContentsOfFile:filePath]; __autoreleasing NSError* error = nil; id result = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error]; // Be careful here. You add this as a category to NSDictionary // but you get an id back, which means that result // might be an NSArray as well! if (error != nil) return nil; return result; } 

执行此操作后,加载视图后,您应该能够通过检索json来设置标签,如下所示:

 -(void)setDataToJson{ NSDictionary *infomation = [NSDictionary dictionaryWithContentsOfJSONString:@"Test.json"]; self.name.text = [infomation objectForKey:@"AnimalName"]; } - (void)viewDidLoad { [super viewDidLoad]; [self setDataToJson]; } 

它应该是valueForKey而不是。

例:

 name.text = [infomation valueForKey:@"AnimalName"];