在我的 iOS 应用程序中,我使用 JSON 上传 MySQL 对象。
这是 celForRowAtIndexPath 方法:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
Lista_Actividades_TableViewCell *cell =[tableView dequeueReusableCellWithIdentifier:@"Cell"];
if (cell ==nil){
cell = [[Lista_Actividades_TableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"Cell"];
}
cell.dia_label.hidden = NO;
cell.minutos_label.hidden = NO;
cell.hora_label.hidden = NO;
cell.mes_label.hidden = NO;
cell.puntos_label.hidden = NO;
NSString *hora = [[categorias objectAtIndex:indexPath.row] objectForKey:@"hora_evento"];
NSString *minutos = [[categorias objectAtIndex:indexPath.row] objectForKey:@"minutos_evento"];
if ([hora isEqualToString:@"0"]){
hora = @"00";
}
if ([minutos isEqualToString:@"0"]){
minutos = @"00";
}
if ([ [[categorias objectAtIndex:indexPath.row] objectForKey:@"hora_evento"] isEqualToString:@"0"] && [[[categorias objectAtIndex:indexPath.row] objectForKey:@"minutos_evento"] isEqualToString:@"0"]){
cell.hora_label.hidden = YES;
cell.puntos_label.hidden = YES;
}
else
{
cell.hora_label.text = [[categorias objectAtIndex:indexPath.row] objectForKey:@"hora_evento"];
}
if ([[[categorias objectAtIndex:indexPath.row] objectForKey:@"hora_evento"] isEqualToString:@"0"] && [[[categorias objectAtIndex:indexPath.row] objectForKey:@"minutos_evento"] isEqualToString:@"0"]){
cell.minutos_label.hidden = YES;
}
else
{
cell.minutos_label.text = minutos;
}
if ([ [[categorias objectAtIndex:indexPath.row] objectForKey:@"dia_evento"] isEqualToString:@"0"]){
cell.dia_label.hidden = YES;
}
else
{
cell.dia_label.text = [[categorias objectAtIndex:indexPath.row] objectForKey:@"dia_evento"];
}
NSString *mes_evento = [[categorias objectAtIndex:indexPath.row] objectForKey:@"mes_evento"];
int value = [mes_evento intValue];
if ([ [[categorias objectAtIndex:indexPath.row] objectForKey:@"mes_evento"] isEqualToString:@"0"]){
cell.mes_label.hidden = YES;
}
else
{
switch (value)
{
case 1:
cell.mes_label.text =@"ENERO";
break;
case 2:
cell.mes_label.text =@"FEBRERO";
break;
case 3:
cell.mes_label.text =@"MARZO";
break;
case 4:
cell.mes_label.text =@"ABRIL";
break;
case 5:
cell.mes_label.text =@"MAYO";
break;
case 6:
cell.mes_label.text =@"JUNIO";
break;
case 7:
cell.mes_label.text =@"JULIO";
break;
case 8:
cell.mes_label.text =@"AGOSTO";
break;
case 9:
cell.mes_label.text =@"SEPTIEMBRE";
break;
case 10:
cell.mes_label.text =@"OCTUBRE";
break;
case 11:
cell.mes_label.text =@"NOVIEMBRE";
break;
case 12:
cell.mes_label.text =@"DICIEMBRE";
break;
default:
cell.mes_label.text =@"SIN MES";
break;
}
}
cell.titulo_label.text = [[[categorias objectAtIndex:indexPath.row] objectForKey:@"titulo_evento"] uppercaseString];
NSString *lugar = [[categorias objectAtIndex:indexPath.row] objectForKey:@"lugar_evento"];
if ([lugar isEqualToString:@"0"]){
NSLog(@"LUGAR AQUI ES=%@",lugar);
cell.lugar_label.text = @" ";
}
else {
cell.lugar_label.text = [[categorias objectAtIndex:indexPath.row] objectForKey:@"lugar_evento"];
}
NSMutableString *logo = [[NSMutableString alloc]initWithString:@"hidden here"];
NSString *imageURL = [[categorias objectAtIndex:indexPath.row] objectForKey:@"imagen_evento"];
if(imageURL != nil && ![imageURL isEqual:[NSNull null]])
{
[logo appendString:imageURL];
NSURL *logoURL = [NSURL URLWithString:logo];
NSData *logoData = [NSData dataWithContentsOfURL:logoURL];
cell.imagen_label.image = [UIImage imageWithData:logoData];
}
else{
cell.imagen_label.image = [UIImage imageNamed:@"no_image-512.png"];
}
return cell;
}
有 45 个对象,并且总是在同一个对象处,应用程序崩溃并出现以下错误:
URL = ACTteatro.jpg
mujergrancanaria(4031,0x4f9e1d4) malloc: *** mach_vm_map(size=8388608) failed (error code=3)
*** error: can't allocate region securely
*** set a breakpoint in malloc_error_break to debug
mujergrancanaria(4031,0x4f9e1d4) malloc: *** mach_vm_map(size=8388608) failed (error code=3)
*** error: can't allocate region securely
*** set a breakpoint in malloc_error_break to debug
libc++abi.dylib: terminating with uncaught exception of type std::bad_alloc: std::bad_alloc
我开发过下载更多 JSON 对象、图片和文本的应用程序,但从未遇到过此问题。
欢迎任何帮助。
最佳答案
在后台任务中下载你的图片,在主线程中进行网络操作会导致严重的问题:
要在后台任务中下载图片,您可以这样做:
if(imageURL != nil && ![imageURL isEqual:[NSNull null]])
{
[logo appendString:imageURL];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
NSURL *logoURL = [NSURL URLWithString:logo];
NSData *logoData = [NSData dataWithContentsOfURL:logoURL];
dispatch_async(dispatch_get_main_queue(), ^{
if (logoData.length) {
cell.imagen_label.image = [UIImage imageWithData:logoData];
}else{
cell.imagen_label.image = [UIImage imageNamed:@"no_image-512.png"];
}
});
});
}
希望这有助于...:)
关于ios - 在 iOS 中下载 JSON 对象时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27700105/
总的来说,我对ruby还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用
在控制台中反复尝试之后,我想到了这种方法,可以按发生日期对类似activerecord的(Mongoid)对象进行分组。我不确定这是完成此任务的最佳方法,但它确实有效。有没有人有更好的建议,或者这是一个很好的方法?#eventsisanarrayofactiverecord-likeobjectsthatincludeatimeattributeevents.map{|event|#converteventsarrayintoanarrayofhasheswiththedayofthemonthandtheevent{:number=>event.time.day,:event=>ev
我正在用Ruby编写一个简单的程序来检查域列表是否被占用。基本上它循环遍历列表,并使用以下函数进行检查。require'rubygems'require'whois'defcheck_domain(domain)c=Whois::Client.newc.query("google.com").available?end程序不断出错(即使我在google.com中进行硬编码),并打印以下消息。鉴于该程序非常简单,我已经没有什么想法了-有什么建议吗?/Library/Ruby/Gems/1.8/gems/whois-2.0.2/lib/whois/server/adapters/base.
我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po
尝试通过RVM将RubyGems升级到版本1.8.10并出现此错误:$rvmrubygemslatestRemovingoldRubygemsfiles...Installingrubygems-1.8.10forruby-1.9.2-p180...ERROR:Errorrunning'GEM_PATH="/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/ruby-1.9.2-p180@global:/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/rub
我有一个表单,其中有很多字段取自数组(而不是模型或对象)。我如何验证这些字段的存在?solve_problem_pathdo|f|%>... 最佳答案 创建一个简单的类来包装请求参数并使用ActiveModel::Validations。#definedsomewhere,atthesimplest:require'ostruct'classSolvetrue#youcouldevencheckthesolutionwithavalidatorvalidatedoerrors.add(:base,"WRONG!!!")unlesss
好的,所以我的目标是轻松地将一些数据保存到磁盘以备后用。您如何简单地写入然后读取一个对象?所以如果我有一个简单的类classCattr_accessor:a,:bdefinitialize(a,b)@a,@b=a,bendend所以如果我从中非常快地制作一个objobj=C.new("foo","bar")#justgaveitsomerandomvalues然后我可以把它变成一个kindaidstring=obj.to_s#whichreturns""我终于可以将此字符串打印到文件或其他内容中。我的问题是,我该如何再次将这个id变回一个对象?我知道我可以自己挑选信息并制作一个接受该信
在我的Controller中,我通过以下方式在我的index方法中支持HTML和JSON:respond_todo|format|format.htmlformat.json{renderjson:@user}end在浏览器中拉起它时,它会自然地以HTML呈现。但是,当我对/user资源进行内容类型为application/json的curl调用时(因为它是索引方法),我仍然将HTML作为响应。如何获取JSON作为响应?我还需要说明什么? 最佳答案 您应该将.json附加到请求的url,提供的格式在routes.rb的路径中定义。这
我的最终目标是安装当前版本的RubyonRails。我在OSXMountainLion上运行。到目前为止,这是我的过程:已安装的RVM$\curl-Lhttps://get.rvm.io|bash-sstable检查已知(我假设已批准)安装$rvmlistknown我看到当前的稳定版本可用[ruby-]2.0.0[-p247]输入命令安装$rvminstall2.0.0-p247注意:我也试过这些安装命令$rvminstallruby-2.0.0-p247$rvminstallruby=2.0.0-p247我很快就无处可去了。结果:$rvminstall2.0.0-p247Search
如果您尝试在Ruby中的nil对象上调用方法,则会出现NoMethodError异常并显示消息:"undefinedmethod‘...’fornil:NilClass"然而,有一个tryRails中的方法,如果它被发送到一个nil对象,它只返回nil:require'rubygems'require'active_support/all'nil.try(:nonexisting_method)#noNoMethodErrorexceptionanymore那么try如何在内部工作以防止该异常? 最佳答案 像Ruby中的所有其他对象