今天在项目中遇到的问题:在获取字典中的地址和文件名字了,并且进行拼接过后,转换成NSURL的时候NSURL的值为空.
NSString*strUrl =[NSStringstringWithFormat:@"%@%@",[rowdic objectForKey:@"DownloadURL"],[rowdic objectForKey:@"Filename"]];
输出strUrl是一个正确的完整的下载地址.
NSURL *url = [NSURL URLWithString:strUrl];
NSLog(@"%@",url);
这个时候NSLog输出为空.
经过测试,是因为文件名称中有空格字符,NSURL无法识别.
解决方案:
-(NSString *)returnFormatString:(NSString *)str
{
return [strstringByReplacingOccurre ncesOfString:@" " withString:@" "];
}
//再看地址,就已经是正确的下载地址了.
NSURL *url = [NSURL URLWithString:[selfreturnFormatString:strUrl]];
由于有些特殊字符在HTTP中的特殊用途,所以在要传递这些字符的时候必须进行编码,下表中列出了一些URL特殊符号及编码
十六进制值
1. + URL 中+号表示空格 %2B
2. 空格 URL中的空格可以用+号或者编码 %20
3. / 分隔目录和子目录 %2F
4. ? 分隔实际的 URL 和参数 %3F
5. % 指定特殊字符 %25
6. # 表示书签 %23
7. & URL 中指定的参数间的分隔符 %26
8. = URL 中指定参数的值 %3D
苹果的url 参数中不能包含空格,可用+替代
具体见: http://dev.firnow.com/course/3_program/java/javajs/2008126/152984.html
NSTableView row 响应双击事件和单击事件 setDoubleAction 和 setAction
-(void)awakeFromNib{
[super awakeFromNib];
[tableView setTarget:self];
[tableView setDoubleAction:NSSelectorFromString(@"doubleClick:")];
//setDoubleAction双击选择事件
[tableView setAction:NSSelectorFromString(@"doubleClick:")];//setAction单击选择事件
}
- (void) doubleClick: (id)sender
{
NSInteger rowNumber = [tableViewclickedRow];
NSLog(@"Double Clicked.%ld ",rowNumber);
}
Cocoa用代码创建窗口的方法
2011-02-17 21:57:26| 分类:Cocoa |字号 订阅
在XCode中创建一个cocoa Application,删掉默认创建的界面菜单文件MainMenu.xib和AppDelegate.h(m)文件。修改main.m文件为以下内容
#import <Cocoa/Cocoa.h>
int main(int argc, char* argv[])
{
[[NSAutoreleasePool alloc] init];
[NSApplication sharedApplication];
NSRect rc = NSMakeRect(0, 0, 800, 600);
NSUInteger uiStyle = NSTitledWindowMask | NSResizableWindowMask | NSClosableWindowMask;
NSWindow* win = [[NSWindow alloc] initWithContentRect:rc styleMask:uiStyle backing:NSBackingStoreBuffered defer:NO];
[win setTitle:@"HelloWin Test"];
[win makeKeyAndOrderFront:nil];
[win makeMainWindow];
[win center];
[NSApp run];
return 0;
}
编译执行即可出现一个800X600大小的空白窗口。