我对使用Core Data(XCode 7.1 / Swift 2.0)的错误感到困惑
以下代码运作正常
class DB_PlayerData: NSManagedObject
{
@NSManaged var playerID: NSNumber
}
class PlayerClass
{
var IDPlayer: Int = 0
}
func test()
{
let LocalAppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let ManagedObjectContext = LocalAppDelegate.managedObjectContext
var SelectAll = NSFetchRequest()
var ResultatRecherche: NSArray = []
var gPlayerData = PlayerClass()
SelectAll = NSFetchRequest(entityName: eNomDBFiles.DB_PlayerData.rawValue)
try! ResultatRecherche = ManagedObjectContext?.executeFetchRequest(SelectAll) as! [DB_PlayerData]
if (ResultatRecherche.count == 1)
{
gPlayerData.IDPlayer = Int(ResultatRecherche[0].playerID)
}
else
{
// Do something
}
}
但是如果函数test
与我的项目中的DB_PlayerData
类声明不在同一个swift文件中,则会出现以下错误:Value of type 'AnyObject' has no member 'playerID'
实体已在Xcode的数据库模型中创建,名称和类等于DB_PlayerData
,模块设置为项目名称。我已经尝试了这里描述的各种设置选项,但没有成功。
有什么线索?
答案 0 :(得分:1)
你没有告诉编译器你的数组中包含哪种类型。
var ResultatRecherche: [DB_PlayerData] = []
而不是
var ResultatRecherche: NSArray = []
我建议你总是尝试使用正确的swift类型而不是像NSArray这样的基础类型。如果您绝对必须使用NSArray
,则需要在尝试访问属性之前将ResultatRecherche[0]
强制转换为正确的类型,否则它将具有AnyObject类型。