【发布时间】:2019-12-10 10:35:33
【问题描述】:
我向 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 中,它在某些情况下更改为零。
【问题讨论】:
-
查看此以获得帮助:[stackoverflow.com/questions/1295459/… NSDictionary 中的键和值排序?)
-
"@"fileID == %@",151",这不是编译。您是否使用
NSNumber或NSString 作为谓词中的值,因为在字典中它被称为NSNumber。此外,您需要更加明确。是不是因为过滤后没有找到值? -
@lame 谓词工作正常。但是 NSDictionary 中的 fileID 值发生了变化。
标签: ios objective-c nsmutablearray nsdictionary