Ios 无法在从NSDictionary获取数据的NSMutableArray的PickerView中显示值

Ios 无法在从NSDictionary获取数据的NSMutableArray的PickerView中显示值,ios,Ios,我无法将NSMutableArray中的数据显示到UIPickerView中。NSMutableArray通过函数从NSDictionary获取其值。当我运行代码时,我得到 '-[__NSDictionaryI length]: unrecognized selector sent to instance' 任何帮助都将不胜感激。多谢各位 - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrN

我无法将NSMutableArray中的数据显示到UIPickerView中。NSMutableArray通过函数从NSDictionary获取其值。当我运行代码时,我得到

'-[__NSDictionaryI length]: unrecognized selector sent to instance'
任何帮助都将不胜感激。多谢各位

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

{

    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];

    if (self) {

        // Custom initialization

    }

    return self;

}



- (void)viewDidLoad

{

    [super viewDidLoad];



    [self setViewElementProperties];

    self.preButton.hidden=YES;

    self.nextButton.hidden =YES;


    if (self.prayerID) {



    }else if (self.prayerItem){

        [self populatePrayerDataFromDictionary];



    }



}//end of ViewDidLoad





- (void)didReceiveMemoryWarning

{

    [super didReceiveMemoryWarning];



}







- (void)setViewElementProperties{

    self.prayerTitleField.borderStyle = UITextBorderStyleNone;

    self.prayerTitleField.font = [UIFont boldSystemFontOfSize:20];

    self.prayerTitleField.textColor = [UIColor grayColor];

    [self.prayerTitleField setEnabled:NO];



    self.prayerTextView.font = [UIFont systemFontOfSize:18];

    [self.prayerTextView setEditable:NO];



    UIBarButtonItem *shareButton = [[UIBarButtonItem alloc] initWithTitle:@"Share" style:UIBarButtonItemStylePlain target:self action:@selector(shareButtonPressed:)];



    self.navigationItem.rightBarButtonItem = shareButton;





}

-(void)shareButtonPressed:(id)sender

{

    self.myPickerView = [[UIPickerView alloc]initWithFrame:CGRectMake(0,300,0,0)];

    self.myPickerView.dataSource = self;

    self.myPickerView.delegate =self;

    self.myPickerView.showsSelectionIndicator = YES;

    self.myPickerView.backgroundColor =[UIColor grayColor];


    self.pickerViewValues = [[NSMutableArray alloc]init]; //(pickerview values)

    [self getFamilyAndOtherMemberIDUsernamesOfCurrentMember];





    [self.view addSubview:self.myPickerView];

}//end of shareButtonPressed



-(NSMutableArray *)getFamilyAndOtherMemberIDUsernamesOfCurrentMember

{

    self.pickerViewValues = [self getOtherMemberIDUsernamesOfCurrentAccount];



    NSMutableDictionary *familyAccount = [@{@"ID":@0, @"USERNAME":@"family"} mutableCopy];

    [self.pickerViewValues addObject:familyAccount];



    NSString *shareableMembers = self.pickerViewValues;



    return self.pickerViewValues;

}





-(NSMutableArray *)getOtherMemberIDUsernamesOfCurrentAccount{

    NSMutableArray *members = [[NSMutableArray alloc]init];

    NSString *accountID = [[NSUserDefaults standardUserDefaults] valueForKey:@"accountID_efs"];

    NSString *currentMemberID = [[NSUserDefaults standardUserDefaults] valueForKey:@"memberID_efs"];



    NSDictionary *accountIDDict = @{@"ACCOUNT_ID":accountID, @"CURRENT_MEMBER_ID":currentMemberID};

    SQLiteResult *memberTableQueryResult = [SQLiteDatabase qin:@"SELECT ID, USERNAME FROM MEMBERS WHERE ID IN (SELECT MEMBER_ID FROM ACCOUNT_MEMBERS WHERE ACCOUNT_ID = :ACCOUNT_ID AND MEMBER_ID <> :CURRENT_MEMBER_ID) ORDER BY USERNAME" withParams:accountIDDict];



    if (memberTableQueryResult.rows.count) {

        members = [memberTableQueryResult getResultData];

    }



    return members;

}





//UIPIckerView DataSource

-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView

{

    return 1;

}

-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component

{

    return [self.pickerViewValues count];
}





// UIPickerView Delegate



-(NSString*) pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component

{

  return [self.pickerData objectAtIndex:row]; 

}

-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component

{
    NSString *selectedPickerValue = [self.pickerData objectAtIndex:row];    
}

请检查您是否在代码的某处调用NSDictionary的长度。获取NSDictionary中条目数的正确方法是count。

从我简要阅读的这个格式糟糕的问题中,我看到了两个问题

首先,您将一个新的alloc inited数组作为选择器值,所以它不能是空的。第二,我认为这一行是问题所在,在sharedButtonPress:idsender中

请尝试在那里放置一个断点,看看它是否在那里崩溃。如果它做到了我希望它应该做到的,那是因为您根据它下面的方法将NSMutableArray返回给self。self这里是viewController

只需更改此行:

 self.pickerViewValues = [[NSMutableArray alloc]init];
[self.pickerViewValues = getFamilyAndOtherMemberIDUsernamesOfCurrentMember];
这一行:

 self.pickerViewValues = [[NSMutableArray alloc]init];
[self.pickerViewValues = getFamilyAndOtherMemberIDUsernamesOfCurrentMember];
你们都应该克服崩溃,并且有价值观。现在,如果您再次发生崩溃,请执行以下操作:

正确设置问题/代码的格式,这很难阅读,而且会让人们不想帮助你。 尝试放置断点以查看失败的确切行/原因 当然,请向我们提交您所掌握的所有信息:
你能把你的问题正确地编排格式吗