gpt4 book ai didi

ios - 为什么我的 NSArray 根据 NSDictonaries 的数量进行迭代

转载 作者:行者123 更新时间:2023-11-29 00:53:51 24 4
gpt4 key购买 nike

这是一个奇怪的问题,我一直在努力尝试不同的解决方法/错误修复。但我已经在这方面花费了大量时间,希望眼光敏锐的人能够找出这个问题的根本原因。

基本上,我将 JSON 文件序列化为 NSArray。我需要对这些数据进行一些操作,因此我创建了原始 NSArray 的 NSMutableArray。

然后我创建一个 NSDictonary,并比较 objectForKey 的。

但是,我注意到当我在 Xcode 控制台中通过 NSLog 语句输出时,我看到数组是按字典数量迭代的。为什么打印出 30 个数组,每个数组有 30 个字典?

这是我拥有的一些与此问题相关的代码。让我知道您的想法以及我可以采取哪些措施来改进此/修复。

    self.objectsList = [[NSArray alloc] init];

[[HTTPServices instance] getConnectabilityObject:^(NSArray * _Nullable dataArray, NSString * _Nullable errorMessage) {
if (dataArray) {
NSMutableArray *array = [[NSMutableArray alloc] init];

for (NSDictionary *dictonary in dataArray) {
ConnectabilityObject *object = [[ConnectabilityObject alloc] init];
object.ConnectabilityTitle = [dictonary objectForKey:@"ConnectabilityObjectTitle"];
object.ConnectabilityObjectType = [dictonary objectForKey:@"ConnectabilityObjectType"];
object.ConnectabilityFullIPAddress = [dictonary objectForKey:@"ConnectabilityObjectFullIPAddress"];
object.ConnectabilityObjectLastOctet = [dictonary objectForKey:@"ConnectabilityObjectLastOctet"];
object.ConnectabilityObjectPortNumberOne = [dictonary objectForKey:@"ConnectabilityObjectPortNum1"];
object.ConnectabilityObjectPortNumberTwo = [dictonary objectForKey:@"ConnectabilityObjectPortNum2"];
object.ConnectabilityObjectPortNumberThree = [dictonary objectForKey:@"ConnectabilityObjectPortNum3"];

[array addObject:object];
}
self.objectsList = array;
}
}];

更新

这是与该数组关联的 NSLogStatement。请注意,我正在通过另一种方法记录此数据。该方法如下所示。

-(void)pingResult:(NSNumber*)success {
NSMutableArray *objects = [NSMutableArray arrayWithArray:_objectlist];
for (NSDictionary *objectDictonary in objects) {
self.objectlist = nil;
NSLog(@"Another Method NSLog %@", objects);
}

这是来自控制台的 NSLog。请注意,这个“另一个方法 NSLog”被调用了 30 次,这等于在 JSON 文件中找到的 ConnectabilityObjects 的数量。

    2016-06-14 11:28:55.724 FlightPath[3866:1176806] Another Method NSLog (
"<ConnectabilityObject: 0x16695d80>",
"<ConnectabilityObject: 0x16696ad0>",
"<ConnectabilityObject: 0x16696b90>",
"<ConnectabilityObject: 0x16696be0>",
"<ConnectabilityObject: 0x16696c30>",
"<ConnectabilityObject: 0x16696ca0>",
"<ConnectabilityObject: 0x16696cf0>",
"<ConnectabilityObject: 0x165b14e0>",
"<ConnectabilityObject: 0x165b1530>",
"<ConnectabilityObject: 0x165b15c0>",
"<ConnectabilityObject: 0x165b1610>",
"<ConnectabilityObject: 0x165b1660>",
"<ConnectabilityObject: 0x165b16b0>",
"<ConnectabilityObject: 0x165b1700>",
"<ConnectabilityObject: 0x165b1750>",
"<ConnectabilityObject: 0x165b17a0>",
"<ConnectabilityObject: 0x165b17f0>",
"<ConnectabilityObject: 0x165b18b0>",
"<ConnectabilityObject: 0x165b1900>",
"<ConnectabilityObject: 0x16696d20>",
"<ConnectabilityObject: 0x16696d50>",
"<ConnectabilityObject: 0x16696da0>",
"<ConnectabilityObject: 0x16696df0>",
"<ConnectabilityObject: 0x16696e40>",
"<ConnectabilityObject: 0x16696e90>",
"<ConnectabilityObject: 0x16696ee0>",
"<ConnectabilityObject: 0x16696f30>",
"<ConnectabilityObject: 0x16696f80>",
"<ConnectabilityObject: 0x16696fd0>",
"<ConnectabilityObject: 0x166970e0>"
)
2016-06-14 11:28:55.729 FlightPath[3866:1176806] Another Method NSLog (
"<ConnectabilityObject: 0x16695d80>",
"<ConnectabilityObject: 0x16696ad0>",
"<ConnectabilityObject: 0x16696b90>",
"<ConnectabilityObject: 0x16696be0>",
"<ConnectabilityObject: 0x16696c30>",
"<ConnectabilityObject: 0x16696ca0>",
"<ConnectabilityObject: 0x16696cf0>",
"<ConnectabilityObject: 0x165b14e0>",
"<ConnectabilityObject: 0x165b1530>",
"<ConnectabilityObject: 0x165b15c0>",
"<ConnectabilityObject: 0x165b1610>",
"<ConnectabilityObject: 0x165b1660>",
"<ConnectabilityObject: 0x165b16b0>",
"<ConnectabilityObject: 0x165b1700>",
"<ConnectabilityObject: 0x165b1750>",
"<ConnectabilityObject: 0x165b17a0>",
"<ConnectabilityObject: 0x165b17f0>",
"<ConnectabilityObject: 0x165b18b0>",
"<ConnectabilityObject: 0x165b1900>",
"<ConnectabilityObject: 0x16696d20>",
"<ConnectabilityObject: 0x16696d50>",
"<ConnectabilityObject: 0x16696da0>",
"<ConnectabilityObject: 0x16696df0>",
"<ConnectabilityObject: 0x16696e40>",
"<ConnectabilityObject: 0x16696e90>",
"<ConnectabilityObject: 0x16696ee0>",
"<ConnectabilityObject: 0x16696f30>",
"<ConnectabilityObject: 0x16696f80>",
"<ConnectabilityObject: 0x16696fd0>",
"<ConnectabilityObject: 0x166970e0>"
)

最佳答案

是的。这是一个 NSLog 错误...

-(void)pingResult:(NSNumber*)success {
for (NSDictionary *objectDictonary in _objectlist) {
NSLog(@"%@", objectDictonary);
}
}

在第一次尝试中,OP 代码是这样做的:

NSMutableArray *objects = [NSMutableArray arrayWithArray:_objectlist];

... 不必要地复制了实例数组 var。

OP 代码是这样做的:

self.objectlist = nil;

...这会危险地删除您要检查的实例数组。

并且,生成令人困惑的输出,OP 代码是这样做的:

NSLog(@"Another Method NSLog %@", objects);

... 表示:“对于我数组中的每个元素,记录我的整个数组”。

关于ios - 为什么我的 NSArray 根据 NSDictonaries 的数量进行迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37815591/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com