2015-06-21 50 views
1

獲取CGSize在我的Web服務響應,我得到我的JSON重點之一的值,如下所示:從NSString的

{ 
dimensions = "1200, 800"; 
displayName = "something"; 
displayNumber = 1; 
} 

我需要的尺寸字符串轉換爲CGSize變量,我使用下面的代碼。我得到了JSON字典到一個NSDictionary名wardsDictionary,也做了以下內容:

NSString *dimensionsString = (NSString *)[wardsDictionary objectForKey:@"dimensions"]; 
CGSize wardDimensions = CGSizeFromString(dimensionsSizeString); 
NSLog(@"the dimensions string: %@",dimensionsString); 
NSLog(@"the width: %@ and height:%@", wardDimensions.width, wardDimensions.height); 

,結果是:

the dimensions string: "1200, 800" 
the width: 0.0000 and height:0.0000 

現在我想在這裏做的是讓組件由分離」, 「並從中獲取CGSize變量。 但是,是否有直接實現這個目標的好方法?

+0

如果數據是JSON,然後用兩個以逗號分隔的值作爲字符串發送一對數字是一個糟糕的設計。與負責服務器的人討論。他們應該發送帶有「寬度」和「高度」鍵的兩個數字,或者帶有兩個數字的字典或數組作爲關鍵「維度」。 – gnasher729

回答

0

如果您可以編輯您的Web服務,請將尺寸鍵單獨分隔至高度爲&的寬度鍵。然後,您可以輕鬆使用這些鍵創建CGSize

如果不可能,唯一的方法是用「,」&將值分配給CGSizeMake

7

問題是CGSizeFromString要求的字符串,格式爲:"{1200, 800}"您可以將支架附加到任何一方,還是做componentsSeparatedByString:@","然後拿到intValue的組件:

NSArray *parts = [dimensionsString componentsSeparatedByString:@","]; 
float width = [parts.firstObject floatValue]; 
float height = [parts.lastObject floatValue]; 
CGSize size = CGSizeMake(width, height); 
+2

如果Web服務的響應不正確,建議使用'firstObject'和'lastObject'來代替它的索引訪問每個「部分」。 –

+0

好點,我試圖保持簡單的解釋。我會更新它 –

+0

一個更好的主意是確認'parts'首先有兩個元素。 – rmaddy