2011-01-21 89 views
1

我一直在做tableview程序,我有一个函数可以处理来自用户首选项和核心数据的多个数据。该程序解析这些东西并返回一个url地址。继承人的代码:objective-c:极其奇怪和烦人的字符串问题

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
NSString *serverAdress = [prefs stringForKey:@"serverAdress"]; 
serverAdress = [serverAdress stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"dd.MM.yyyy"]; 

NSDateFormatter *dateFormatter2 = [[NSDateFormatter alloc] init]; 
[dateFormatter2 setDateFormat:@"dd.MM.yyyy HH:mm"]; 

NSString *dateString = [dateFormatter stringFromDate:[NSDate date]]; 

NSString *dateTimeString = [NSString stringWithFormat:@"%@ %@",dateString,[dashboardParameters attribute1]]; 

NSTimeInterval dayInterval = [[dashboardParameters attribute2] intValue]*60*60*(-1); 
NSDate *date2 = [[dateFormatter2 dateFromString:dateTimeString] addTimeInterval:dayInterval]; 
NSString *urlString = 
[NSMutableString stringWithFormat:@"%@/webservices/service1.asmx/getHourlySales2?tarih2=%@&tarih1=%@&salesType=%@", 
    serverAdress, 
    dateTimeString, 
    [dateFormatter2 stringFromDate:date2], 
    [dashboardParameters itemOrder] 
    ]; 
urlString = [urlString stringByReplacingOccurrencesOfString:@" " withString:@"%20"]; 
return urlString; 

一切工作很好,我没有检索数据的问题。但是,当我执行的代码,我得到这个日志输出:

//server.dyndns.org/webservices/service1.asmx/getHourlySales2?tarih2=20.01.2011%2016:00 & tarih1 = 2011年1月19日%2016:00 & salesType = Hepsi/web服务/ Service1.asmx的/ getHourlySales2 tarih2 = 21.01.2011%2022:00 & tarih1 = 21.01.2011%2011:00 & salesType = Hepsi

它必须是

//server.dyndns.org/web服务/ Service1.asmx的/ getHourlySales2 tarih2 =二零一一年一月二十零日%2016年?00 & tarih1 = 2011年1月19日%2016年00 & salesType = Hepsi

但奇怪的程序添加

/web服务/service1.asmx/getHourlySales2?tarih2=21.01.2011%2022:00 & tarih1 = 21.01.2011%2011:00 & salesType = Hepsi

本身正常处理之后。

也是另一个重要的事情,代码运行正常,当我从代码中删除

NSString *serverAdress = [prefs stringForKey:@"serverAdress"]并手动输入serveradress。

提供帮助,程序中的所有内容都能正常工作,但我仍然遇到这个问题。

感谢您的帮助。

+1

有无你检查过它'[prefs stringForKey:@“serverAdress”]`给你你所期望的? – 2011-01-21 15:34:22

+0

尝试为serverAdress放置一个`NSLog`,看看它给了你什么。服务器地址是否会在程序中的某处发生更改?如果没有,我只是将它硬编码为一个字符串,而不是搞乱'NSUserDefaults`。哦,顺便说一下,smidgeon并不重要,但是你可能想拼一下`serverAddress`。 :) – 2011-01-21 15:49:33

回答

0

那么服务器地址之前是否会将其添加到urlString中。看起来好像serverAdress包含 '//server.dyndns.org/webservices/service1.asmx/getHourlySales2?tarih2=20.01.2011%2016:00 & tarih1 = 2011年1月19日%2016年00 & salesType = Hepsi'