我是目标c的新手,只是试图为现有对象增加价值。
请查看下面的代码。
当我创建像这样的对象时它工作正常
ToAddiTem *item1 = [[ToAddiTem alloc] init];
item1.itemName = @"Some value";
[self.toDoItems addObject:item1];
ToAddiTem *item2 = [[ToAddiTem alloc] init];
item2.itemName = @"Some value";
[self.toDoItems addObject:item2];
ToAddiTem *item3 = [[ToAddiTem alloc] init];
item3.itemName = @"Some value";
[self.toDoItems addObject:item3];
但是当我试图用json webservices动态地执行此操作时,它根本不起作用。
请看下面的内容。
NSURL *url = [NSURL URLWithString:@"http://acumen- locdef.elasticbeanstalk.com/service/countries"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[NSURLConnection sendAsynchronousRequest:request
queue:[NSOperationQueue mainQueue]
completionHandler:^(NSURLResponse *response,
NSData *data, NSError *connectionError)
{
if (data.length > 0 && connectionError == nil)
{
NSMutableArray *greeting = [NSJSONSerialization JSONObjectWithData:data
options:0
error:NULL];
for (NSDictionary *countryList in greeting) {
ToAddiTem *item1 = [[ToAddiTem alloc] init];
item1.itemName = countryList[@"name"];
[self.toDoItems addObject:item1];
}
}
}];
非常感谢你的帮助!!
答案 0 :(得分:0)
您可能需要初始化toDoItems Array
self.toDoItems = [NSMutableArray array];
然后
for (NSDictionary *countryList in greeting) {
ToAddiTem *item1 = [[ToAddiTem alloc] init];
item1.itemName = countryList[@"name"];
[self.toDoItems addObject:item1];
}
答案 1 :(得分:0)
您可能会收到反序列化错误。
NSError *err;
NSMutableArray *greeting = [NSJSONSerialization JSONObjectWithData:data
options:0
error:NULL];
if (err)
{
NSLog(@"Error deserializing JSON: %@", [err localizedDescription]);
}
else
{
for (NSDictionary *countryList in greeting) {
ToAddiTem *item1 = [[ToAddiTem alloc] init];
item1.itemName = countryList[@"name"];
[self.toDoItems addObject:item1];
}
}
答案 2 :(得分:0)
我遇到了同样的问题,发现这是因为您异步获取数据。因此,您的代码不会等到数据存在,它才会继续。
如果您将其切换为同步通话,它将起作用:
NSURL *url = [NSURL URLWithString:@"http://acumen-locdef.elasticbeanstalk.com/service/countries"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
NSError *error = nil;
NSHTTPURLResponse *responseCode = nil;
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&responseCode error:&error];
NSMutableArray *greeting = [NSJSONSerialization JSONObjectWithData:data options:0 error:NULL];
for (NSDictionary *countryList in greeting) {
ToAddiTem *item1 = [[ToAddiTem alloc] init];
item1.itemName = countryList[@"name"];
[self.toDoItems addObject:item1];
}