2016-06-07 62 views
-2

我想用解析字符串並調用數組valueForKeyPath:如何解析字符串調用數組和數組內容

例如:

NSArray *myArray = @[1,2,3,4,5,6,7,8]; 

我有一個字符串的如下

myArray[], myArray[3],myArray[1..3] 

當我評估這些字符串我想要輸出如下

evaluate(@"myArray[]") 
output:@[1,2,3,4,5,6,7,8] 
evaluate(@"myArray[3]") 
output:4 
evaluate(@"myArray[1..3]") 
output:@[2,3,4] 

我已經在使用自定義函數使用valueForKeyPath:來調用方法和函數。我堅持使用數組和參數

+0

看來你正在編寫一個小型編譯器。 –

+0

不是。我的要求是,我會從服務器獲取這些字符串,我必須從我的應用數據中動態評估這些字符串,並將輸出返回給服務器。 – Sumanth

+0

這就是我的意思。你正在對錶達式進行文本表示並試圖將它們作爲代碼執行,這是一種編譯器類型的函數。 (或者,「解釋者」可能會更準確。) –

回答

1

你沒有顯示任何你已經嘗試過的東西,所以你不清楚你的問題是什麼 - 你似乎知道你可以從中構建解決方案的東西(valueForKeyPath:,正則表達式)。

這裏是一個解決方案的概要:

  1. 你的字符串的所有似乎是一個三種形式:數組名,然後在方括號零,一個或兩個整數。您可以使用(至少)NSRegularExpressionNSScanner將其分解爲一到三個重要部分。如果您選擇NSRegularExpression,那麼只需謹慎編寫該模式爲[].是特殊字符,並且需要適當的轉義 - 只需閱讀文檔。
  2. 一旦你有你的三部分,你可以使用valueForKey:假設它是一個屬性或一個實例變量獲得數組的值。
  3. 如果您已經匹配/掃描了一個或兩個索引,那麼您可以使用NSArray的方法獲取對象,您可能會發現這裏有用NSIndexSet

就是這樣。如果你試圖做到這一點,卡住編輯你的問題,顯示你已經嘗試過什麼,說明什麼是壞的,並尋求幫助;有人可能會進一步幫助。

HTH

+0

謝謝,我會檢查出來 – Sumanth