如何将sinaweibo demo project 加入到 Three20UI中
想将sinaweibo demo project 加入到 Three20UI中,当用户点击thumb photo 相册的时候,一张放大的图片上加上sinaweibo图标。现在点击sinaweibo图标,可以出现 OAuth 及 XAuth 选择界面,再点击OAuth 时,App crashes.
点击 XAuth 时,出现用户名及密码登录界面,输入后,程序同样崩溃。
用的是下面的代码:
- (void)clickActionItem {} in the three20UI as follows: - (void)clickActionItem { SinaWeiBoSDKDemoViewController *sinaWeiBoSDKDemoViewController = [[[SinaWeiBoSDKDemoViewController alloc] initWithNibName:@"SinaWeiBoSDKDemoViewController" bundle:nil] autorelease]; [self.navigationController pushViewController:sinaWeiBoSDKDemoViewController animated:YES]; }
问题出在这里:[pairs addObject:[NSString stringWithFormat:@"%@=%@", key, [[dict objectForKey:key] URLEncodedString]]];
找到了URLEncodedString 的定义,而且我的项目已经引用了这个定义,可为什么还报错哪?如何修改哪? 谢谢!
It is defined in the WBUtil.m ( which is already included in the Three20UI ) as :
- (NSString *)URLEncodedString
{
return [self URLEncodedStringWithCFStringEncoding:kCFStringEncodingUTF8];
}
----------------- WBUtil.m
#import "WBUtil.h"
#import <CommonCrypto/CommonDigest.h>
#import <CommonCrypto/CommonHMAC.h>
#import "GTMBase64.h"
#pragma mark - NSData (WBEncode)
@implementation NSData (WBEncode)
- (NSString *)MD5EncodedString
{
unsigned char result[CC_MD5_DIGEST_LENGTH];
CC_MD5([self bytes], [self length], result);
return [NSString stringWithFormat:@"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X",
result[0], result[1], result[2], result[3], result[4], result[5], result[6], result[7],
result[8], result[9], result[10], result[11], result[12], result[13], result[14], result[15]];
}
- (NSData *)HMACSHA1EncodedDataWithKey:(NSString *)key
{
NSData *keyData = [key dataUsingEncoding:NSUTF8StringEncoding];
void *buffer = malloc(CC_SHA1_DIGEST_LENGTH);
CCHmac(kCCHmacAlgSHA1, [keyData bytes], [keyData length], [self bytes], [self length], buffer);
NSData *encodedData = [NSData dataWithBytesNoCopy:buffer length:CC_SHA1_DIGEST_LENGTH freeWhenDone:YES];
return encodedData;
}
- (NSString *)base64EncodedString
{
return [GTMBase64 stringByEncodingData:self];
}
@end
#pragma mark - NSString (WBEncode)
@implementation NSString (WBEncode)
- (NSString *)MD5EncodedString
{
return [[self dataUsingEncoding:NSUTF8StringEncoding] MD5EncodedString];
}
- (NSData *)HMACSHA1EncodedDataWithKey:(NSString *)key
{
return [[self dataUsingEncoding:NSUTF8StringEncoding] HMACSHA1EncodedDataWithKey:key];
}
- (NSString *) base64EncodedString
{
return [[self dataUsingEncoding:NSUTF8StringEncoding] base64EncodedString];
}
- (NSString *)URLEncodedString
{
return [self URLEncodedStringWithCFStringEncoding:kCFStringEncodingUTF8];
}
- (NSString *)URLEncodedStringWithCFStringEncoding:(CFStringEncoding)encoding
{
return [(NSString *) CFURLCreateStringByAddingPercentEscapes(NULL, (CFStringRef)[[self mutableCopy] autorelease], NULL, CFSTR("=,!$&'()*+;@?\n\"<>#\t :/"), encoding) autorelease];
}
@end
#pragma mark - NSString (WBUtil)
@implementation NSString (WBUtil)
+ (NSString *)GUIDString
{
CFUUIDRef theUUID = CFUUIDCreate(NULL);
CFStringRef string = CFUUIDCreateString(NULL, theUUID);
CFRelease(theUUID);
return [(NSString *)string autorelease];
}
@end
得到如下 errors from the debugger c*****ole: [Session started at 2012-04-06 02:42:08 +0000.]
2012-04-06 10:42:21.656 TTNavigatorDemo[461:ef03] Current page in photo browser (1 of 10)
2012-04-06 10:42:23.635 TTNavigatorDemo[461:ef03] -[NSCFString URLEncodedString]: unrecognized selector sent to instance 0x1171e0
2012-04-06 10:42:23.638 TTNavigatorDemo[461:ef03] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSCFString URLEncodedString]: unrecognized selector sent to instance 0x1171e0'
*** Call stack at first throw:
(
0 CoreFoundation 0x015875a9 __exceptionPreprocess + 185
1 libobjc.A.dylib 0x016db313 objc_exception_throw + 44
2 CoreFoundation 0x015890bb -[NSObject(NSObject) doesNotRecognizeSelector:] + 187
3 CoreFoundation 0x014f8966 ___forwarding___ + 966
4 CoreFoundation 0x014f8522 _CF_forwarding_prep_0 + 50
5 TTNavigatorDemo 0x000bf4de +[WBRequest stringFromDictionary:] + 438
6 TTNavigatorDemo 0x000c05ad +[WBRequest serializeURL:params:httpMethod:] + 192
7 TTNavigatorDemo 0x000ba3db -[WBAuthorize startAuthorize] + 249
8 TTNavigatorDemo 0x000bd238 -[WBEngine logIn] + 592
9 TTNavigatorDemo 0x000c770d -[SinaWeiBoSDKDemoViewController onLogInOAuthButtonPressed] + 53
10 UIKit 0x004ab4fd -[UIApplication sendAction:to:from:forEvent:] + 119
11 UIKit 0x0053b799 -[UIControl sendAction:to:forEvent:] + 67
12 UIKit 0x0053dc2b -[UIControl(Internal) _sendActi*****ForEvents:withEvent:] + 527
13 UIKit 0x0053c7d8 -[UIControl touchesEnded:withEvent:] + 458
14 UIKit 0x004cfded -[UIWindow _sendTouchesForEvent:] + 567
15 UIKit 0x004b0c37 -[UIApplication sendEvent:] + 447
16 UIKit 0x004b5f2e _UIApplicationHandleEvent + 7576
17 GraphicsServices 0x01e53992 PurpleEventCallback + 1550
18 CoreFoundation 0x01568944 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 52
19 CoreFoundation 0x014c8cf7 __CFRunLoopDoSource1 + 215
20 CoreFoundation 0x014c5f83 __CFRunLoopRun + 979
21 CoreFoundation 0x014c5840 CFRunLoopRunSpecific + 208
22 CoreFoundation 0x014c5761 CFRunLoopRunInMode + 97
23 GraphicsServices 0x01e521c4 GSEventRunModal + 217
24 GraphicsServices 0x01e52289 GSEventRun + 115
25 UIKit 0x004b9c93 UIApplicationMain + 1160
26 TTNavigatorDemo 0x000028de main + 104
27 TTNavigatorDemo 0x0000286d start + 53
)
terminate called throwing an exception
如何将sinaweibo demo project 加入到 Three20UI中相关推荐
- AR!!!高通Vuforia-iOS-SDK 和官方Demo 集成到iOS 项目中所需要注意的几点.
AR!!!高通Vuforia-iOS-SDK 和官方Demo 集成到iOS 项目中所需要注意的几点. 首先,要说明一下,博主是一名AR小白,根据公司的计划,要我往Vuforia iOS原生 + 项目i ...
- Android学习小Demo(13)Android中关于ContentObserver的使用
在一些应用上,比如手机银行,QQ,微信等,很多时候我们都需要通过发送验证码到手机上,然后把验证码填上去,然后才能成功地继续去做下面一步事情. 而如果每次我们都要离开当前界面,然后去查收短信,记住验证码 ...
- demo:用matlab在excel中画图(背景填充颜色)
通过excel单元格背景填色,做成图片的样子.最开始在一个公众号上看到这个做法并给出了些基本函数,就照着码了一下.做过去好久了,链接也找不到了,就先不贴了-上面没有给出详细代码,我自己的做法比较傻逼, ...
- ROS project part 1: Ubuntu中安装opencv包以及相应的依赖
首先在ubuntu linux上安装opencv $ sudo apt-get install python-opencv 使用ipython 验证 opencv的安装 $ import cv2 as ...
- Android学习小Demo(14)Android中关于PopupWindow的使用
在一些场景中,我们希望能够点击按钮, 然后弹出一个菜单,而这个菜单是显示在屏幕的中央的,那么在Android中可以通过PopupWindow来实现这个效果. 具体效果如下图: 如上图中,我们点击&qu ...
- Project Remind-You(持续更新中......)
说明 一个类似于supervisor的进程监控框架,使用python编写.支持动态plugin插入删除. 程序框架 采用多进程的工作方式,主进程运行后.从配置文件中读出所有的plugin信息.并根据配 ...
- E-PUCK机器人-软件
在e-puck上运行的嵌入式软件在git repo https://github.com/gctronic/e-puck-library中不断扩展和管理.包括一个完整的库,可与安装在e-puck上的所 ...
- E-puck机器人-小白学习笔记(一)准备工作
目录 E-puck机器人 一.技术参数 dsPIC 30F6014A 二.软件 e-puck-library-master文件夹 BasicDemos.zip 三.编译 MPLAB是什么? pic单片 ...
- 框架:springboot组合spring、springmvc、mybatis的一个小demo
Spring+SpringMVC+Mybatis就是大名顶顶的SSM了. 这里我们使用IDEA的SpringBoot和版本控制器MAVEN构建一个SSM的demo. 介绍: 在搭建过程中spring整 ...
最新文章
- 收藏 | 数据分析师最常用的10个机器学习算法!(附图解)
- android 自定义扫地机器人地图,扫地机如何正确操作进行APP建图?
- 设计模式(八)之单例模式
- 2020ICPC(上海) - Walker(分类讨论+二分)
- hdu 3079水题
- WCF技术剖析之十八:消息契约(Message Contract)和基于消息契约的序列化
- jquery工具方法parseJSON
- Windows Server 2008通过计划任务定时执行bat文件
- linux使用rpm重装jdk
- Way back into love
- 电脑拖机,win10一台电脑两人用
- 步进电机基础(5.9)-步进电机的驱动与控制-三相步进电机的驱动电路
- 极大似然估计法(Maximum likelihood estimation, MLE)
- 如何检查网站死链接 分享检查死链接方法
- lintcode 输出赛程表
- Java EXCEL 表格导入导出(带下拉选-带VLOOKUP函数封装)
- 【Hexo+Next主题】相册功能搭建详细步骤
- 微信小程序 java理发店美容院预约系统springboot
- NV040C语音单片机芯片,节省MCU开发成本,在电取暖桌上的应用!
- python周环比增长率怎么算_平均增长速度可以根据各个环比增长速度直接求得。()...