2012-07-03 47 views
0

我有一個webservice和ios應用程序。我用ASIHTTPRequest.h, ASIFormDataRequest.h標題來處理連接到我的PHP腳本/ MySQL數據庫如何在If語句中使用NSMutableString作爲條件

在我需要發送多個請求給我的web服務和處理每個響應viewcontrollers之一,需要的ViewController的觀點和方法,每個請求後刷新。

ASIHTTPRequest只有一個(void)requestFinished:(ASIHTTPRequest *)request事件,所以我需要處理的(void)requestFinished:(ASIHTTPRequest *)request在我的塊反應來處理我想出了主意,也許我可以使用一個字符串,當請求完成,我可以在if語句中使用此字符串請求我寫了下面的代碼,但我的條件我requestfinish方法if ([checkRequest rangeOfString:@"like"].location != NSNotFound)不工作

VoteMe.h

@interface VoteMe : UIViewController<UITextFieldDelegate>{ 
NSMutableString *checkRequest; 
} 
@property (retain, nonatomic) NSMutableString *checkRequest; 

Vote.m

@synthesize checkRequest; 
- (void)viewDidLoad 
{ 
[self showPicture]; 
} 

-(void)showPicture 
{ 
    checkRequest =[NSMutableString stringWithString:@"showPicture"]; 

    //request a random picture url, from server 
    NSURL *url = [NSURL URLWithString:showpicture]; 
    ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url]; 

    [request setDelegate:self]; 
    [request startAsynchronous]; 
} 
-(IBAction)voteLike:(id)sender{ 

    checkRequest =[NSMutableString stringWithString:@"like"]; 

    NSURL *url = [NSURL URLWithString:voteup]; 
    ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url]; 

    [request setDelegate:self]; 
    [request startAsynchronous]; 

    [self showPicture]; 

} 
- (void)requestFinished:(ASIHTTPRequest *)request 
{  

    if ([checkRequest rangeOfString:@"like"].location != NSNotFound) { 
    //do smth 
    } 

    if ([checkRequest rangeOfString:@"showPicture"].location != NSNotFound) { 
    //do someth else 
    } 
} 

以上代碼的問題,當-(IBAction)voteLike:(id)sender被調用時應該改變的checkRequest字符串「喜歡」所以當ASIFormDataRequest響應到達時,如果條件可以正常工作

在破發點,我看到checkRequest Variable is not a CFString

當我使用的Nsstring代替NSMutableString它是同樣的結果

我知道我需要retain字符串,然後release事後但我不使用alloc應該還是需要retain/release

我該如何實現我的目標?要麼有更好的解決方案來檢查陳述或修復NSStringNSmutableString以上問題?

回答

2

當你定義的東西作爲一個屬性(checkRequest),使用self.checkRequest當你提到它的代碼,除非你有一個非常的理由。如果您直接訪問變量,那麼放在屬性語句中的屬性將被忽略。

1

請求結束時,checkRequest不是字符串的原因是因爲您永遠不會保留checkRequest。您已創建一個保留屬性,但在您直接訪問實例變量時不會使用它。

對於checkRequest使用你的財產予以保留,你必須寫

self.checkRequest = [NSMutableString stringWithString:@"like"]; 
相關問題