我向NSMutableArray添加了NSDictionary。
for (TblFiles *objTblFile in visitorFilesArray) {
NSData *fileDataTemp = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString: objTblFile.internalFileName]];
NSDictionary *tempDict = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInteger:(NSInteger)objTblFile.fileID],@"fileID",
objTblFile.fileName,@"fileName",
fileDataTemp,@"fileData",nil];
[filesArrayInAddVisitor addObject:tempDict];
}
在那之后,我试图从该数组中删除一个字典,但是我崩溃了。这是因为fileID值已更改。一段时间后,它的工作完美。有时会崩溃。
NSPredicate *objPredicate = [NSPredicate predicateWithFormat:@"fileID == %@",151];
NSArray *filterArray = [filesArrayInAddVisitor filteredArrayUsingPredicate:objPredicate];
[self->filesArrayInAddVisitor removeObject:[filterArray objectAtIndex:0]];
[self->fileTableView reloadData];
我不知道为什么NSDictionary中的值会更改。
示例:我将fileID添加为151,但在NSMutableArray中,在某些情况下它更改为零。
答案 0 :(得分:0)
1。崩溃的第一个问题是谓词字符串。 替换为此
NSPredicate *objPredicate = [NSPredicate predicateWithFormat:[NSString stringWithFormat:@"fileID == %d",151]];
2。您说的是fileID值已更改,然后首先确认 objTblFile.fileID 是什么类型,如果它是NSInteger,则可以。
在我的示例中,我已经在那里传递了NSInteger,并且代码可以正常工作。