如何在不同的 ViewController 中使用 JSONModel 数据?
Posted
技术标签:
【中文标题】如何在不同的 ViewController 中使用 JSONModel 数据?【英文标题】:How to use JSONModel data in different ViewControllers? 【发布时间】:2017-02-09 09:14:25 【问题描述】:我在我的目标 c 应用程序中使用 JSONModel。我在第一个 abBarController 中获取所有数据到我的 JSONModel。然后我需要在其他 viewController 中获取这些数据。我正在尝试将此数据发送到其他 viewController,例如:
第一个 ViewController:
@implementation FirstViewController
...
SecondViewController* infoController = [self.storyboard instantiateViewControllerWithIdentifier:@"secondViewController"];
SecondViewController.model = self.model;//Here send the model with data
[self.navigationController pushViewController:infoController animated:YES];
...
@end
第二个视图控制器:
@interface SecondViewController :UIViewController
MyModel *model;
@property MyModel *model;
有更好的形式来保持这个数据模型的实例化并从另一个 viewController 获取模型数据而不用在属性中发送这个?
【问题讨论】:
在模型类中创建共享对象,并在 id 对象中设置 JSON 对象,然后在任何 ViewController 中访问它。 使用单例设置或获取模型数据 【参考方案1】:创建对象类
在 .h 对象类中
@interface FirstModel : NSObject
@property(nonatomic,strong)NSMutableArray *productsArray;
在 .m 对象类中
-(id)init
self=[super init];
if (self)
_productsArray=[[NSMutableArray alloc]init];
return self;
创建另一个对象类
@interface SecondModel : NSObject
@property (nullable,nonatomic, retain) NSString *name;
@end
在 TableviewViewcontroller .h 文件中 导入两个Object类并插入如下代码
@property(nonatomic,strong)FirstModel *firstListObject;
在 .m 文件中 //rowAt Indexpath 的单元格
SecondModel *prodObj=_firstListObject.productsArray[indexPath.item];
cell.productNameLabel.text=prodObj.name;
您可以在任何需要的地方访问此对象类……
【讨论】:
【参考方案2】:您可以使用单例类,创建您的模型属性。 在另一个 viewController 中,您可以通过单例实例访问您的模型。参考http://www.idev101.com/code/Objective-C/singletons.html
【讨论】:
在应用程序的内存中使用单例可能效率低吗?? 不用担心内存问题。它们非常小【参考方案3】:或者您可以使用 plist 或数据库将其归档到本地文件
【讨论】:
以上是关于如何在不同的 ViewController 中使用 JSONModel 数据?的主要内容,如果未能解决你的问题,请参考以下文章
在 Swift 中,如何在不同的 ViewController 中永久更改 a 标签的文本?
如何使用来自不同 ViewController 的 JSON 响应填充 UITableView?
如何在 Xamarin for iOS 中呈现具有不同导航的 viewController