【问题标题】:NSDictionary values changes without any modificationNSDictionary 值更改而无需任何修改
【发布时间】: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


【解决方案1】:

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

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

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

对于我的例子,我已经通过了 NSInteger 并且代码工作正常。

【讨论】:

    猜你喜欢
    • 2011-12-21
    • 1970-01-01
    • 1970-01-01
    • 2012-09-04
    • 2014-02-10
    • 1970-01-01
    • 2021-08-01
    • 2019-10-16
    • 2021-08-30
    相关资源
    最近更新 更多