NSDictionary值不做任何修改就更改

问题描述 投票:0回答:1

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

ios objective-c nsmutablearray nsdictionary
1个回答
0
投票

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

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

2。您说的是fileID值已更改,然后先确认objTblFile.fileID的类型是NSInteger,然后确定是什么。

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

© www.soinside.com 2019 - 2024. All rights reserved.