Ios 数据源(来自模型)未在视图控制器中加载
我在模型(model.h和model.m)中有一个由字符串填充的Ios 数据源(来自模型)未在视图控制器中加载,ios,objective-c,arrays,model-view-controller,uilabel,Ios,Objective C,Arrays,Model View Controller,Uilabel,我在模型(model.h和model.m)中有一个由字符串填充的NSArray,数组在TableViewController中填充字符串,在该数组中,我可以成功地编辑保存并访问我模型中的数据。我想让字符串也出现在UILabel的ViewController中,但它只显示(null),这意味着我没有成功地从模型中访问数据,有人能帮忙吗 PS:我没有显示TableView的代码,因为它工作正常 这是我的密码: Model.h: #import <Foundation/Foundation.h&
NSArray
,数组在TableViewController
中填充字符串,在该数组中,我可以成功地编辑保存并访问我模型中的数据。我想让字符串也出现在UILabel
的ViewController
中,但它只显示(null),这意味着我没有成功地从模型中访问数据,有人能帮忙吗
PS:我没有显示TableView的代码,因为它工作正常
这是我的密码:
Model.h:
#import <Foundation/Foundation.h>
@interface Model : NSObject<NSCoding>
@property (strong, nonatomic) NSArray *array;
+(NSString *)getPathToArchive;
+(Model *)getModel;
+(void)saveModel:(Model *)aModel;
@end
#import "Model.h"
@implementation Model
- (id)init {
self = [super init];
return self;
}
+(NSString *)getPathToArchive {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docsDir = [paths objectAtIndex:0];
return [docsDir stringByAppendingPathComponent:@"model.model"];
}
+(Model *)getModel{
return [NSKeyedUnarchiver unarchiveObjectWithFile:[Model getPathToArchive]];
}
+(void)saveModel:(Model *)aModel {
[NSKeyedArchiver archiveRootObject:aModel toFile:[Model getPathToArchive]];
}
-(void)encodeWithCoder:(NSCoder *)anEncoder {
[anEncoder encodeObject:self.model forKey:@"array"];
}
-(id)initWithCoder:(NSCoder *)aDecoder {
self = [super init];
if(self) {
self.model = [aDecoder decodeObjectForKey:@"array"];
}
return self;
}
@end
ViewController.h
#import <UIKit/UIKit.h>
@class Model;
@interface ViewController : UIViewController
@property (strong,nonatomic) Model *model;
@end
在viewDidLoad
中更改以下行:
[Model getModel];
到
您的模型确实在getModel
方法中加载数据。但是您仍然必须将此方法返回的Model
实例分配给ViewController
的Model
属性。否则,您将无法访问模型
您在视图控制器
中在哪里设置self.Model
?“viewDidLoad”中似乎是nil
,我应该在ViewController中的何处以及如何设置self.model?我认为[Model getModel]将完成从模型“加载”数据的工作。
[Model getModel];
self.model = [Mode getModel];