ProjName.xcdatamodel
" " に "Questions" という名前のエンティティがあります。このエンティティには、5 つの属性 (「アイスホッケー」、「バレーボール」、「サッカー」など) があり、それぞれに type がありtransformable
ます。各行 (属性) は NSMutableArray で埋められます。私がやりたいことは、このエンティティの特定の属性の値を取得することです。これは私のコードです:
func readQuestionsFromCore(sport:NSString) -> NSMutableArray {
var appDel:AppDelegate = (UIApplication.sharedApplication().delegate as AppDelegate)
var context:NSManagedObjectContext = appDel.managedObjectContext!
var request = NSFetchRequest(entityName: "Questions")
request.returnsObjectsAsFaults = false
var results: NSArray = context.executeFetchRequest(request, error: nil)!
var qArr:NSMutableArray!
if results.count > 0 {
var res = results[0] as NSManagedObject
qArr = res.valueForKey("\(sport)") as NSMutableArray
return qArr
} else {
qArr = []
return qArr
}
}
データベースから結果の最初のインデックスを取得するため ( results[0] as NSManagedObject
)、これはもちろん機能しません。したがって、その要素が探している valueForKey と同じでない場合はクラッシュします。
探している 1 つの結果行を取得するにはどうすればよいですか? つまり、「サッカー」、または少なくとも結果をループして各結果行のキーを比較して、間違ったキーで試してもクラッシュしないようにすることはできますか? このようなもののように:
for (res) in results as NSManagedObject {
if(res.key == "soccer") {
qArr = res.valueForKey("soccer") as NSMutableArray
return qArr
}
}
私の説明が明確であることを願っています!