我正在使用 Kumulos 向数据库提交信息。不幸的是,我无法让提交方法工作。
这个应用程序是用 Xcode 中的 Objective-C 编写的
我已将Kumulos.h、Kumulos.m、libKumulos.h和libKumulos_iOS_.0.7.4.a 复制到我的项目中。
在我的viewDidLoad
我有:
k = [[Kumulos alloc]init];
[k setDelegate:self];
然后我通过执行以下操作在另一个线程中调用提交方法:
- (IBAction)submit:(UIButton *)sender
{
[loader startAnimating];
[NSThread detachNewThreadSelector:@selector(SubmittoDB) toTarget:self withObject:nil];
}
在另一个线程中调用此方法:
-(void)SubmittoDB
{
NSDate *date=[NSDate date];
Transporter *T = [Transporter shared];
[k submitToDbWithLatitude:[T getlat]
andLongitude:[T getlon]
andFirstName:[T getfirstname]
andLastName:[T getlastname]
andEmailAddress:[T getemail]
andPhoneNumber:[T getphone]
andDateReported:date
andPoleNumber:@"NULL"
andOther:othertext.text
andProblem:[T getproblem]];
}
该T
对象只是一个持有信息的对象。
这些是我的didCompleteWithResult
和didFailWithError
方法:
-(void) kumulosAPI:(Kumulos *)kumulos apiOperation:(KSAPIOperation *)operation submitToDbDidCompleteWithResult:(NSNumber *)newRecordID
{
[self performSelectorOnMainThread:@selector(segue) withObject:nil waitUntilDone:false];
}
-(void) kumulosAPI:(kumulosProxy *)kumulos apiOperation:(KSAPIOperation *)operation didFailWithError:(NSString *)theError
{
errormessage=theError;
[self performSelectorOnMainThread:@selector(error) withObject:nil waitUntilDone:false];
}//failwitherror
更新
-(void)segue
{
[loader stopAnimating];
[self performSegueWithIdentifier:@"uploaderdebrief" sender:self];
}//segue
-(void)error
{
[loader stopAnimating];
UIAlertView *nope = [[UIAlertView alloc]initWithTitle:@"Error"
message:errormessage
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[nope show];
}
失败方法每次都会执行,但 NSString "theError" 总是为零,所以我不知道出了什么问题。如果我从 Kumulos 网站上的 kumulos 仪表板运行此 API 方法,我可以成功地将数据提交到数据库。
有人知道会发生什么吗?任何帮助将不胜感激。也希望每个人都有一个美好的圣诞节(如果那是你的事)
编辑
我稍早地放置了一个断点,我发现NSString theError
说Variable is not a CFString
,然后如果我再采取一步,它就会恢复为nil
. 有没有办法找出它指的是哪个变量?另外,为什么theError
会变回nil
?我希望能够打印出该错误消息。