从已经存在的 nsarray 构建 NSArray
我有一个 NSArray 和来自我的网络服务的 JsonValue 。
myArray = [responseString JSONValue];
这个数组在 NSLog 中给了我这个:
2012-02-18 18:22:46.338 Test[2758:fb03] myArray: (
{
receiver = david;
sender = sophie;
message = "test1";
photo = "****************.jpg";
},
{
receiver = david;
sender = matt;
message = "test2";
photo = "****************.jpg";
},
{
receiver = sophie;
sender = mike;
message = "test1";
photo = "****************.jpg";
},
{
receiver = david;
sender = ali;
message = "test1";
photo = "****************.jpg";
},
{
receiver = mike;
sender = david;
message = "test1";
photo = "****************.jpg";
},
{
receiver = admin;
sender = david;
message = "test1";
photo = "****************.jpg";
}
)
我需要创建一个只有 sender = 'David' 的新数组
我尝试这样做:
for(int i=0;i<[myArray count];i++)
{
NSDictionary *dict1=[myArray objectAtIndex:i];
if ( [[dict1 objectForKey:@"sender"] isEqualToString:@"david"])
{
NSLog(@"YES");
myNewArray = [[NSArray alloc] initWithObjects:dict1, nil];
NSLog(@"array %@",myNewArray);
NSLog(@"count %d",[myNewArray count]);
}
else
{
NSLog(@"NO");
myNewArray2 = [[NSArray alloc] initWithObjects:dict1, nil];
NSLog(@"array2 %@",myNewArray2);
NSLog(@"count2 %d",[myNewArray2 count]);
}
}
这个 myNewArray 给了我这个:
2012-02-18 18:22:46.341 Test[2758:fb03] myNewArray (
{
receiver = mike;
sender = david;
message = "test1";
photo = "****************.jpg";
}
)
2012-02-18 18:22:46.341 Test[2758:fb03] myNewArray (
{
receiver = admin;
sender = david;
message = "test1";
photo = "****************.jpg";
}
)
但是我需要一个这样的数组:
2012-02-18 18:22:46.338 Test[2758:fb03] myNewArray: (
{
receiver = mike;
sender = david;
message = "test1";
photo = "****************.jpg";
},
{
receiver = admin;
sender = david;
message = "test1";
photo = "****************.jpg";
}
)
感谢阅读
i have an NSArray with JsonValue from my webservice.
myArray = [responseString JSONValue];
this Array give me that in a NSLog:
2012-02-18 18:22:46.338 Test[2758:fb03] myArray: (
{
receiver = david;
sender = sophie;
message = "test1";
photo = "****************.jpg";
},
{
receiver = david;
sender = matt;
message = "test2";
photo = "****************.jpg";
},
{
receiver = sophie;
sender = mike;
message = "test1";
photo = "****************.jpg";
},
{
receiver = david;
sender = ali;
message = "test1";
photo = "****************.jpg";
},
{
receiver = mike;
sender = david;
message = "test1";
photo = "****************.jpg";
},
{
receiver = admin;
sender = david;
message = "test1";
photo = "****************.jpg";
}
)
I need to create a new array with only sender = 'David'
i try with that:
for(int i=0;i<[myArray count];i++)
{
NSDictionary *dict1=[myArray objectAtIndex:i];
if ( [[dict1 objectForKey:@"sender"] isEqualToString:@"david"])
{
NSLog(@"YES");
myNewArray = [[NSArray alloc] initWithObjects:dict1, nil];
NSLog(@"array %@",myNewArray);
NSLog(@"count %d",[myNewArray count]);
}
else
{
NSLog(@"NO");
myNewArray2 = [[NSArray alloc] initWithObjects:dict1, nil];
NSLog(@"array2 %@",myNewArray2);
NSLog(@"count2 %d",[myNewArray2 count]);
}
}
this myNewArray give me that:
2012-02-18 18:22:46.341 Test[2758:fb03] myNewArray (
{
receiver = mike;
sender = david;
message = "test1";
photo = "****************.jpg";
}
)
2012-02-18 18:22:46.341 Test[2758:fb03] myNewArray (
{
receiver = admin;
sender = david;
message = "test1";
photo = "****************.jpg";
}
)
But i need to have a array like that:
2012-02-18 18:22:46.338 Test[2758:fb03] myNewArray: (
{
receiver = mike;
sender = david;
message = "test1";
photo = "****************.jpg";
},
{
receiver = admin;
sender = david;
message = "test1";
photo = "****************.jpg";
}
)
thx for reading
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
NSArray 是不可变的,您将需要一个 NSMutableArray。并且您将在每个循环中重新初始化新数组,如果您想保留以前的值,则无法执行此操作。
A NSArray is immutable, you will need a NSMutableArray. And you are re-initliazing the new array on every loop, which you cannot do if you want to keep the previous values.
在循环之外声明
myNewArray
,并将其设为 NSMutableArray (它将允许添加新对象),然后如果某些条件相等则将对象添加到该数组中
Declare
myNewArray
outside of the cycle, and make it a NSMutableArray (it'll allow to add new objects )then add object to this array if some condition is equal
有一个更简单的方法。尝试使用 NSArray 的
filteredArrayUsingPredicate:
,其中您的情况中的谓词如下所示:有关谓词的更多详细信息,请尝试 谓词编程指南。
There's a much easier way. Try using NSArray's
filteredArrayUsingPredicate:
where the predicate in your case is something like this:For more details on predicates, try the Predicate Programming Guide.