【发布时间】:2016-10-07 04:05:21
【问题描述】:
我正在从 Core Data 进行简单的拉取,并使用谓词过滤结果,如下所示:
do {
let request: NSFetchRequest<CSTProjectDetails> = CSTProjectDetails.fetchRequest()
request.predicate = NSPredicate(format: "projectID == %@", cstProjectID)
cstProjectDetails = try context.fetch(request)
} catch {
print("There was an error fetching CST Project Details.")
}
当我尝试打印以下详细信息时,我得到以下信息。
print("CSTProjectDetails: \(cstProjectDetails)")
这将产生如下内容:
CSTProjectDetails:[(实体: CST项目详情;编号:0xd000000000080004 ;数据:),(实体: CST项目详情;编号:0xd0000000000c0004 ;数据:),(实体: CST项目详情;编号:0xd000000000100004 ;数据:),(实体: CST项目详情;编号:0xd000000000140004 ;数据:),(实体: CST项目详情;编号:0xd000000000180004 ;数据:)]
我尝试将“cstProjectDetails”转换为数组,并对结果进行一些测试:
let hrData = self.cstProjectDetails as NSArray
print("There are \(hrData.count) items in this project")
这实际上会打印出从 Core Data 中提取的正确数量的项目。
如果我这样做:
dump(hrData)
我得到这样的东西:
- (实体:CSTProjectDetails;ID:0xd000000000080004 ;数据:) #1
- 超级:LogsterBeta3.CSTProjectDetails
- 超级:NSManagedObject
- (实体:CSTProjectDetails;ID:0xd0000000000c0004 ;数据:) #2
- 超级:LogsterBeta3.CSTProjectDetails
- 超级:NSManagedObject
- (实体:CSTProjectDetails;ID:0xd000000000100004 ;数据:) #3
- 超级:LogsterBeta3.CSTProjectDetails
- 超级:NSManagedObject
- (实体:CSTProjectDetails;ID:0xd000000000140004 ;数据:) #4
- 超级:LogsterBeta3.CSTProjectDetails
- 超级:NSManagedObject
- (实体:CSTProjectDetails;ID:0xd000000000180004 ;数据:) #5
- 超级:LogsterBeta3.CSTProjectDetails
- 超级:NSManagedObject
说了这么多,我尝试通过这样的方式在循环中访问实体的属性:
for logDetails in hrData {
print (logDetails.species)
}
但是,这会立即产生错误,说“species”不是有效的成员。
谁能告诉我我在这里缺少什么?如何将 NSFetchRequest 中的值放入数组中?
【问题讨论】:
标签: arrays core-data swift3 xcode8