Ios 为什么可以';t我使用“;“强”;或;分配;在这里I';MVC模式下的m编程
我正试图做出一个选择的观点,我有一个充满国家名称的plist。现在,我想通过我的模型加载这些数据,并用我的控制器将它们显示在picker视图上。起初,我使用“assign”和“strong”来描述文件“WXFlagsModel”中的属性“name”,但一旦我开始滚动选择器,程序就崩溃了!然后我试着“复制”,然后一切都很好。有人能告诉我为什么吗?谢谢大家! 1.这是“WXFlagsModel.h”文件的一部分 Xcode告诉我: 线程1:EXC\u错误访问(代码=1,地址=0x20)Ios 为什么可以';t我使用“;“强”;或;分配;在这里I';MVC模式下的m编程,ios,objective-c,nsstring,Ios,Objective C,Nsstring,我正试图做出一个选择的观点,我有一个充满国家名称的plist。现在,我想通过我的模型加载这些数据,并用我的控制器将它们显示在picker视图上。起初,我使用“assign”和“strong”来描述文件“WXFlagsModel”中的属性“name”,但一旦我开始滚动选择器,程序就崩溃了!然后我试着“复制”,然后一切都很好。有人能告诉我为什么吗?谢谢大家! 1.这是“WXFlagsModel.h”文件的一部分 Xcode告诉我: 线程1:EXC\u错误访问(代码=1,地址=0x20) PS:我不允
PS:我不允许在这里嵌入屏幕截图,所以我只是键入单词。
assign
用于基本类型strong
用于目标c类类型。请提供崩溃的详细信息,包括异常名称、消息和堆栈跟踪。我打赌崩溃的不是返回语句。代码中有任何警告吗?
#import <Foundation/Foundation.h>
@interface WXFlagsModel : NSObject
@property (copy ,nonatomic) NSString *name;
@property (strong,nonatomic)NSString *icon;
-(instancetype)initWithDict:(NSDictionary*)dict;
+(instancetype)flagsWithDict:(NSDictionary*)dict;
+(NSArray*)flags;
@end
#import "ViewController.h"
#import "WXFlagsModel.h"
@interface ViewController ()<UIPickerViewDataSource,UIPickerViewDelegate>
@property (nonatomic,strong) NSArray *flags;
@end
@implementation ViewController
#pragma mark - lazy loading
-(NSArray *)flags
{
if (_flags == nil) {
NSArray *array = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle]pathForResource:@"flags.plist" ofType:nil]];
NSMutableArray *arrayM = [NSMutableArray array];
for (NSDictionary *dict in array) {
WXFlagsModel *model = [WXFlagsModel flagsWithDict:dict];
[arrayM addObject:model];
}
_flags = arrayM;
}
return _flags;
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
NSLog(@"%@",self.flags);
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
#pragma mark - picker view delegate
#pragma mark - picker view data source
// returns the number of 'columns' to display.
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 1;
}
// returns the # of rows in each component..
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
return self.flags.count;
}
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
// WXFlagsModel *flag = [WXFlagsModel new];
WXFlagsModel *flag = self.flags[row];
return flag.name;
}
#pragma mark - private methods
@end
return flag.name;