Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 线程1崩溃:EXC_坏_访问(目标C)_Ios_Objective C_Iphone_Xcode_Uitableview - Fatal编程技术网

Ios 线程1崩溃:EXC_坏_访问(目标C)

Ios 线程1崩溃:EXC_坏_访问(目标C),ios,objective-c,iphone,xcode,uitableview,Ios,Objective C,Iphone,Xcode,Uitableview,面对问题 (线程1:EXC_坏访问) .我试了很多,但都解决不了。以下是我尝试过的代码。在NSDictionary*thisRow=[self.EmployeeArr objectAtIndex:row]获取问题 (这里的问题是“线程1:EXC\u坏访问”)。请帮我找出问题所在。短暂性脑缺血发作 EmployeesVC.h @interface Employees : UITableViewController<CacheDBDelegate,JsonServiceClsDelegate

面对问题

(线程1:EXC_坏访问)

.我试了很多,但都解决不了。以下是我尝试过的代码。在
NSDictionary*thisRow=[self.EmployeeArr objectAtIndex:row]获取问题
(这里的问题是“线程1:EXC\u坏访问”)。请帮我找出问题所在。短暂性脑缺血发作

EmployeesVC.h

@interface Employees : UITableViewController<CacheDBDelegate,JsonServiceClsDelegate,UITableViewDataSource,UITableViewDelegate> {
    CacheDBCommands *cacheDB;
    MBProgressHUD *countryHUD;
    JsonServiceCls *JsonServicePostData;
    OverlayViewController *ovController;
    NSArray *IndexTitles;
    NSMutableArray *listOfItems;
    NSMutableArray *citylistOfItems;
    NSMutableArray *copyListOfItems;
    NSMutableArray *EmployeeArr;
    BOOL searching;
    BOOL letUserSelectRow;

}


@property (retain, nonatomic) NSMutableArray *EmployeeArr;
@end



EmployeesVC.m


#pragma mark -
#pragma mark Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    // Return the number of sections.
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    // Return the number of rows in the section.
    return [self.EmployeeArr count];
}


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    NSUInteger row = [indexPath row];

    static NSString *MyIdentifier = @"tableCell";

    CustomMaster *cell = (CustomMaster *) [tableView dequeueReusableCellWithIdentifier:MyIdentifier];

    if (cell == nil) {

        NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomMaster" owner:self options:nil];

        for (id currentObject in topLevelObjects){
            if ([currentObject isKindOfClass:[UITableViewCell class]]){
                cell =  (CustomMaster *) currentObject;

            }
        }

    }

    **NSDictionary *thisRow = [self. EmployeeArr objectAtIndex:row];
    (Getting issue here, the issue is "Thread 1: EXC_BAD_ACCESS")**




    cell.label1.text = [thisRow objectForKey:@"Name"];
    if(_WSConstEmployeeID !=nil && ![_WSConstEmployeeID isEqual:@"0"] && ![_WSConstEmployeeID isEqual:@""] &&_WSConstEmployeeSelectedIndex ==row  )
    {
        cell .accessoryType=UITableViewCellAccessoryCheckmark;
    }
    else {
        cell .accessoryType=UITableViewCellAccessoryNone;
    }


    NSString *str=[thisRow objectForKey:@"Id"];
    NSString *stra=_WSConstEmployeeID;
    if ([str isEqualToString:stra]) {
        cell.accessoryType=UITableViewCellAccessoryCheckmark;
        cell.highlighted=YES;
    }else
    {
        cell.accessoryType=UITableViewCellAccessoryNone;

    }

    return cell;

}
EmployeesVC.h
@界面员工:UITableViewController{
CacheDBCommands*cacheDB;
MBHUD*countryHUD;
jsonservicecels*JsonServicePostData;
OverlayViewController*ovController;
NSArray*索引;
NSMutableArray*列表项;
NSMutableArray*城市模型;
NSMutableArray*copyListOfItems;
NSMutableArray*EmployeeArr;
布尔搜索;
BOOL-letUserSelectRow;
}
@属性(保留,非原子)NSMUTABLEARRY*EmployeeArr;
@结束
雇员
#布拉格标记-
#pragma标记表视图数据源
-(NSInteger)表格视图中的节数:(UITableView*)表格视图{
//返回节数。
返回1;
}
-(NSInteger)表视图:(UITableView*)表视图行数节:(NSInteger)节{
//返回节中的行数。
返回[self.EmployeeArr count];
}
-(UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath{
NSUTEGER行=[indexPath行];
静态NSString*MyIdentifier=@“tableCell”;
CustomMaster*单元格=(CustomMaster*)[tableView dequeueReusableCellWithIdentifier:MyIdentifier];
如果(单元格==nil){
NSArray*topLevelObjects=[[NSBundle mainBundle]loadNibNamed:@“CustomMaster”所有者:自选项:nil];
用于(topLevelObjects中的id currentObject){
if([currentObject IsKindof类:[UITableViewCell类]]){
单元格=(CustomMaster*)currentObject;
}
}
}
**NSDictionary*thisRow=[self.EmployeeArr objectAtIndex:row];
(这里有一个问题,问题是“线程1:EXC\u坏访问”)**
cell.label1.text=[thisRow objectForKey:@“Name”];
如果(\uWSConstEmployeeId!=nil&&![\uWSConstEmployeeId isEqual:@“0”]&&![\uWSConstEmployeeId isEqual:@”“]&&&\uWSConstEmployeeSelectedIndex==行)
{
cell.accessoryType=UITableViewCellAccessoryCheckmark;
}
否则{
cell.accessoryType=UITableViewCellAccessoryNone;
}
NSString*str=[thisRow objectForKey:@“Id”];
NSString*stra=\u WSConstEmployeeID;
if([str isEqualToString:stra]){
cell.accessoryType=UITableViewCellAccessoryCheckmark;
单元格。突出显示=是;
}否则
{
cell.accessoryType=UITableViewCellAccessoryNone;
}
返回单元;
}

对于今天这个时代来说,这是一些奇怪的代码

(1) 在@interface中声明IVAR在7年前就过时了。如果有IVAR,则它们位于.m中,通常位于类扩展中。即使如此,大多数人根本不声明IVAR,而是更喜欢
@property

(2) IVAR不应以大写字母开头

(3) 您拥有的一个属性声明为
retain
,这也是旧方法;通常,在弧前或弧外使用。你把ARC打开了吗


如果您没有启用ARC,那么您是否保留
EmployeesArr
?如果不是,那就是你的崩溃。如果没有启用ARC,为什么不启用?您可能应该这样做。

您在哪里初始化CountriesArr?我觉得您正在访问索引处的项,该索引超出了数组的界限。检查
在何处声明并初始化CountriesArr?
EmployeeArr
count是否可以大于
CountriesArr
count。您不应按基于
EmployeeArr
count的索引获取国家/地区对象。它是EmployeeArr而不是CountriesArr。我已经更新了代码。请检查一下