2011-08-18 439 views
1

我正在研究基於Core Data的iOS應用程序,其中我將coredata中的數組字符存儲爲NSData(二進制數據)。 在讀取數據的同時,如何編寫NSPredicate這將只檢索包含給定字符串的NSData值的結果。具有NSData屬性的核心數據

if name屬性是一個字符串,然後我可以寫下面的謂詞。

NSString *inputName = @"bbb"; 
NSPredicate * predicate = [NSPredicate predicateWithFormat:@"name = %@",inputName]; 

我的問題是
會有怎樣的斷言,如果nameNSDataNSData

NSArray *anArray = [NSArray arrayWithObjects:@"aaa",@"bbb",@"ccc",nil]; 
NSData *arrayData = [NSArchiver archivedDataWithRootObject:anArray]; 

arrayData存儲爲核心數據name屬性。

我希望這些信息足以瞭解我的問題。 在此先感謝。

+0

什麼是背後的存儲字符串作爲'NSData'的原因是什麼? – Akshay

+0

@Akshay - 例如:我有一位主管提交,它與僱員人數有關。這些僱員姓名將是一串字符串。核心數據不支持NSArray,所以我將其轉換爲NSData並存儲在覈心數據中。 – Raj

+0

@Akshay和我m不存儲字符串作爲NSData否則數組字符串存儲爲數據 – Raj

回答

1

我找到了答案..converted NSArrayNSSet並將其存儲在實體

0

如果我正確理解你的問題和隨後的評論,並且你正在使用一個存儲爲數據的數組來表示層次關係,那麼你顯然沒有按照設計使用Core Data。

相反,我建議您創建一個獨立的實體來代表員工,然後建立他們和主管之間的關係?

雖然它不是iOS特定的,但是這個tutorial by Apple表明了這個概念。

+0

讓我檢查它,謝謝.... – Raj

0

根據您的意見,我認爲您需要重新審視您的架構。如果您的主管&員工(許多員工可以擁有相同的主管)之間有一對多關係,則應該創建一個實體Employee,併爲其添加屬性supervisorID。然後你可以用類似於where supervisorID="123"的方式查詢你的Employee表。

如果你不能重新設計你的模式,你可以將NSData轉換爲NSString &使用-initWithData:encoding:將它保存在CoreData中。

HTH,

阿克沙伊