2014-08-28 88 views
0

我創建了從服務器獲取數據的方法,一切正常,除了當我嘗試字符串設定例如UILabelUITextView,什麼也不顯示和更改的罰款!這裏是我的代碼:設置UILabel的文本

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 


    [self getDataFromURL:@"http://somesites.net/panel/services?action=events&num=1" 
       setTitle:_eTitle1.text image:_eImage1 description:_eNews1.text]; 

} 

獲取數據:

-(void)getDataFromURL:(NSString*)url setTitle:(NSString*)eTitle 
        image:(UIImageView*)eImages description:(NSString*)eDescriptions { 


     NSURL *URL = [NSURL URLWithString:url]; 
     NSError *error1; 
     NSString *strPageContent = [NSString stringWithContentsOfURL:URL encoding:NSUTF8StringEncoding error:&error1]; 
     strPageContent = [strPageContent gtm_stringByUnescapingFromHTML]; 
     if ([strPageContent rangeOfString:@"<plist version=\"1.0\">"].location != NSNotFound) { 
      NSRange range = [strPageContent rangeOfString:@"<plist version=\"1.0\">"]; 
      strPageContent = [strPageContent substringWithRange:NSMakeRange(range.location+range.length, strPageContent.length-(range.location+range.length))]; 
      strPageContent = [strPageContent stringByReplacingOccurrencesOfString:@"</plist>" withString:@""]; 
     } 


     NSError *error = nil; 
     NSDictionary *dict = [XMLReader dictionaryForXMLString:strPageContent options:XMLReaderOptionsProcessNamespaces 
                 error:&error]; 

     if ([dict count]>0) { 

      NSDictionary *dictInner = [dict objectForKey:@"dict"]; 
      NSArray *arrValues = [dictInner objectForKey:@"string"]; 



      NSString * strTitle = [[arrValues objectAtIndex:0] objectForKey:@"text"]; 
      NSString *strImage = [[arrValues objectAtIndex:1] objectForKey:@"text"]; 
      NSString * strDescription = [[arrValues objectAtIndex:2] objectForKey:@"text"]; 

      eTitle = strTitle; 
      eDescriptions = strDescription; 

    //  [eImages setImageWithURL:[NSURL URLWithString:strImage] 
    //    placeholderImage:[UIImage imageNamed:@"loadingPad.jpg"]]; 

      NSLog(@"Title: %@ | Image: %@ | Desc: %@",eTitle,strImage,eDescriptions); 

     } 


    } 

編譯器給了我正確的信息!但這些字符串不能設置爲我拉布勒,如果我把我的拉布勒的串入它的工作方法! :

_eTitle1.text = strTitle ; 

回答

1

這是完全正常的:當您將「文本」對象傳遞給方法時,您將指針傳遞給它。直接分配給另一個NSString對象將只分配一個新的指針。爲了有一個字符串的副作用你必須使用NSMutableString,但擁有的UILabel的文本屬性只是一個不可改變的NSString。因此,唯一的解決辦法是通過的UILabel或通過該方法內的初始化空可變的字符串,通過[eTitleText setString:strTitle]改變的內容,然後,該方法以外,將其分配到的UILabel text屬性。

所以,要麼你改變這樣的方法(因爲你已經做了):

-(void)getDataFromURL:(NSString*)url setTitle:(UILabel*)eTitle 
        image:(UIImageView*)eImages description:(NSString*)eDescriptions { 
... 
eTitle.text = strTitle; 
... 

,並使用它像這樣:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 


    [self getDataFromURL:@"http://somesites.net/panel/services?action=events&num=1" 
       setTitle:_eTitle1 image:_eImage1 description:_eNews1.text]; 

} 

或者你可以去這個其他方式:

-(void)getDataFromURL:(NSString*)url setTitle:(NSMutableString*)eTitle 
         image:(UIImageView*)eImages description:(NSString*)eDescriptions 
... 
[eTitle setString:strTitle]; 
... 

並且像這樣使用它:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    NSMutableString *titleText = [NSMutableString new]; 
    [self getDataFromURL:@"http://somesites.net/panel/services?action=events&num=1" 
       setTitle:titleText image:_eImage1 description:_eNews1.text]; 
    eTitle1.text = titleText; 
} 
+0

由於沒有工作!檢查我編輯的問題, – 2014-08-28 15:28:28

+0

你試過了什麼?我沒有看到@ Mc.Lover – 2014-08-28 15:29:58

+0

AHA的問題的任何變化!它現在的作品!謝謝 – 2014-08-28 15:30:34