我正在構建一個複合NSPredicate,以在iOS應用程序中使用sqlite上的核心數據進行獲取請求。一切正常,但我無法包括最後的條件。原因很簡單:我需要檢查存儲爲字符串的值是否在某個浮點範圍內。問題是條件是按字母順序檢查的,而不是根據其浮點值。這是代碼:NSPredicate:如何將字符串視爲數字?
NSString * conditionToBeAdded = [NSString stringWithFormat:@" && (%@ >= \"""%@\""") && (%@ <= \"""%@\""")", propertyName, myMinFloat, propertyName, myMaxFloat];
stringForPredicate = [stringForPredicate stringByAppendingString:conditionToBeAdded];
NSPredicate * myPredicate = [NSPredicate predicateWithFormat:stringForPredicate];
是否有人知道如何建立一個NSPredicate對象能夠檢查字符串值作爲數字,要在coredata請求中使用?
謝謝。
你過濾了什麼樣的對象?是否有可能採取其他方式,並在您的對象上創建只讀屬性,將字符串轉換爲NSNumber?通過這種方式,您可以完全控制案例,其中存儲的字符串不包含有效的數字。 – 2012-01-16 11:46:54
這是應用程序的模型,它包含所有數據。這些對象有很多屬性,(名稱,地址,價格等),全部是NSString。到現在爲止,我通過執行沒有這種條件的過濾和過濾數組來解決問題,但速度稍慢。我試過你的解決方案,它不會工作,因爲它沒有在模型實體定義中找到屬性,這是一個好點,但我需要再次定義我的模型,創建媽媽文件,生成類並重新導入所有的數據,我猜 – user236739 2012-01-16 12:19:39
你可以用一個自定義類來支持你的實體,實質上只添加只讀屬性。這可能會導致數據模型的新版本,因此需要數據遷移,這應該是可行的,因爲這兩個版本的數據模型僅在添加自定義類時纔有所不同。自動遷移應該能夠照顧到這一點,只要您擁有舊版和新版數據模型即可使用。 – 2012-01-16 13:03:04