NSDictionary值无需任何修改即可更改



我在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中,在某些情况下它更改为零。

1.我崩溃的第一个问题是谓词字符串。 用这个替换它

NSPredicate *objPredicate = [NSPredicate predicateWithFormat:[NSString stringWithFormat:@"fileID == %d",151]];

2.你是说文件ID值发生了变化,然后首先确认objTblFile.fileID的类型是什么,如果是NSInteger,那么它就可以了。

对于我的例子,我已经在那里传递了NSInteger并且代码工作正常。

最新更新