0

我正在使用 Kumulos 向数据库提交信息。不幸的是,我无法让提交方法工作。

这个应用程序是用 Xcode 中的 Objective-C 编写的

我已将Kumulos.hKumulos.mlibKumulos.hlibKumulos_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对象只是一个持有信息的对象。

这些是我的didCompleteWithResultdidFailWithError方法:

-(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 theErrorVariable is not a CFString,然后如果我再采取一步,它就会恢复为nil. 有没有办法找出它指的是哪个变量?另外,为什么theError会变回nil?我希望能够打印出该错误消息。

4

2 回答 2

0

它最终成为我所在的网络的问题。发生错误是因为为了模拟没有互联网的设备,我只需禁用 wifi,并且在重新启用 wifi 时,我没有重新提供用户名/密码以通过 NTLM 身份验证。

于 2013-01-03T20:29:02.463 回答
0

我似乎有类似的情况,除了没有返回给我,甚至没有返回到 didFailWithError 委托方法。我在 kumulos.m 文件中添加了一些日志记录。这可能会帮助你,但它还没有把我带到任何地方。在您的 kumulos.m 文件中查找您的 submitToDbWithLatitude 方法,并[newOp setDebugMode:YES];在 KSAPIOperation 初始化后添加。

当您运行项目时,它将提供一些更详细的结果。可能有帮助。麦克风

于 2012-12-26T20:30:28.717 回答