2013-02-21 37 views
1

解析遠程XML文件中的元素後,我得到了NSArray中元素及其值的列表。由於數組包含更多的元素和價值觀這樣,如何從NSArray獲取imageUrlString

success; products=<AGSProducts 0x7189020; name='category1';imageIdentifier='1'; imageUrlString='http://myimage.com/images/img1.png'; subProducts=> 

我需要從這個NSArrray得到imageUrlString。如何從這些數組中單獨獲取這個特定的imageUrlString。

MyViewController

@property(nonatomic,strong) NSMutableArray *xmlProductsResults; 

[super viewDidLoad]; 
NSURL *url = [NSURL URLWithString:@"http://myxml.com/Category.xml"]; 
EGSParser *parser = [[EGSParser alloc] init]; 
if ([parser loadXMLByURL:url]){ 
    self.xmlProductsResults = parser.products; 
    NSArray *myArray = [_xmlProductsResults objectAtIndex:0]; 
    NSLog(@"success; products=%@", myArray); 
} 

請建議我一個想法

+0

做一些字符串操作來獲取該值。 – 2013-02-21 09:20:36

回答

2

希望這有助於。

編輯2

NSString *string = [myArray description]; 
NSString *url = nil; 
NSScanner *parser = [NSScanner scannerWithString:string]; 
[parser scanUpToString:@"imageUrlString" intoString:nil]; 

if (![parser isAtEnd]) { 
    [parser scanUpToString:@"=" intoString:nil]; 
    NSCharacterSet *charset = [NSCharacterSet characterSetWithCharactersInString:@"\"'"]; 
    [parser scanUpToCharactersFromSet:charset intoString:nil]; 
    [parser scanCharactersFromSet:charset intoString:nil]; 
    [parser scanUpToCharactersFromSet:charset intoString:&url]; 

} 

NSLog(@"URL: %@", url); 
+0

我的應用程序得到終止與錯誤'[AGSProduct copyWithZone:]:無法識別的選擇發送到實例0x71622b0' – Sabarish 2013-02-21 09:45:20

+0

所以它是數組。我想你是絃樂。請參閱我編輯的版本 – 2013-02-21 09:51:29

+0

Nope終止於[[AGSProduct objectForKey:]:無法識別的選擇器發送到實例0x719e350' – Sabarish 2013-02-21 09:55:12

1

轉換字典中的

NSMutableDictionary *dic = [myString JSONValue]; 

你的迴應從DIC,你可以得到的imageUrlString

+0

你能說出那個JSONValue的意思嗎?僅供參考使用XML文件 – Sabarish 2013-02-21 09:17:02

+0

它的解析器,它在字典中轉換你的字符串。 – Dhara 2013-02-21 09:20:21

+0

在該語句中出現錯誤'JSONValue'爲''NSArray'沒有可見的@interface'聲明選擇器'JSONValue''我需要爲此導入任何內容嗎? – Sabarish 2013-02-21 09:24:23

1

警告:這不是最佳做法,但會做的伎倆,它是有效的...

NSString *result = @""; 
NSRange r1 = [myString rangeOfString:@"imageUrlString='"]; 
if(r1.location != NSNotFound) 
{ 
    result = [myString substringFromIndex:r1.location+r1.length]; 
    NSRange r2 = [result rangeOfString:@"'"]; 
    if(r2.location != NSNotFound) 
    { 
     result = [result substringToIndex:r2.location]; 
    } 
    else 
    { 
     result = @""; 
    } 
} 

NSLog(@"%@", result); 
+0

我的應用程序終止錯誤'[AGSProduct rangeOfString:]:無法識別的選擇發送到實例0x74b45b0' – Sabarish 2013-02-21 09:47:27

+0

確保myString是一個NSString,而不是其他類型...先試試這個:NSString * myString =(NSString *)myOldStringObj; – apascual 2013-02-21 09:51:11

1

試試這個。

//NSArray *arr = [NSArray arrayWithObjects:@"<AGSProducts 0x7189020; name='category1';imageIdentifier='1'; imageUrlString='http://myimage.com/images/img1.png'; subProducts=>", nil]; 
    //NSString *imgURL= [arr objectAtIndex:0]; 

    NSString *imgURL=[_xmlProductsResults objectAtIndex:0]; 

    imgURL = [imgURL substringFromIndex:[imgURL rangeOfString:@"imageUrlString="].location+[@"imageUrlString=" length]+1]; 
    imgURL = [imgURL substringToIndex:[imgURL rangeOfString:@";"].location-1]; 
    NSLog(@"%@",imgURL); 
+0

Nope Bhargavi,得到一個錯誤'[AGSProduct rangeOfString:]:無法識別的選擇器發送到實例0x7435380' – Sabarish 2013-02-21 09:43:44

+0

你是如何從NSArray獲得價值的? – 2013-02-21 09:49:58

+0

正如我上面顯示的那樣,'myArray'會像NSLoglike這樣的成功一樣打印出來; products = ' – Sabarish 2013-02-21 09:57:07