Ios 是否使用关系类在coredata中保存数据?
我有一个类Ios 是否使用关系类在coredata中保存数据?,ios,swift,core-data,Ios,Swift,Core Data,我有一个类Place&另一个类为Address。现在一个地方只有一个地址,因此我必须创建到一个关系。现在,当我尝试保存这个地方时,我无法执行此操作。下面是我为此功能编写的代码 if #available(iOS 10, *) { placeInfo = NSEntityDescription.insertNewObject(forEntityName: "PlaceInfo", into: appDelegate.persistentContainer.viewCont
Place
&另一个类为Address
。现在一个地方只有一个地址,因此我必须创建到一个关系。现在,当我尝试保存这个地方时,我无法执行此操作。下面是我为此功能编写的代码
if #available(iOS 10, *) {
placeInfo = NSEntityDescription.insertNewObject(forEntityName: "PlaceInfo", into: appDelegate.persistentContainer.viewContext) as? PlaceInfo
} else {
placeInfo = NSEntityDescription.insertNewObject(forEntityName: "PlaceInfo", into: appDelegate.managedObjectContext!) as? PlaceInfo
}
var cordinates:[String] = []
placeInfo?.title = Place.shared.title ?? ""
placeInfo?.desc = Place.shared.desc ?? ""
placeInfo?.id = "Place_" + String(Utility.shared.currentTimeStamp())
let spotLocation = Place.shared.address
if let lat = spotLocation?.lat, let long = spotLocation?.long {
cordinates = [lat.toString(),long.toString()]
}
let address = NSEntityDescription.insertNewObject(forEntityName: "PlaceAddress", into: appDelegate.managedObjectContext!) as? PlaceAddress
address?.street = "Street"
address?.landmark = "LANDMARK"
address?.city = "MYCITY"
address?.state = "SATTE"
address?.state = "INDIA"
address?.pincode = "1256325"
placeInfo?.isuploaded = true
if let spotid = placeInfo?.id {
// saveMediaToDB(id: spotid)
}
placeInfo?.address_rel = address
Placeinfo类
import Foundation
import CoreData
extension PlaceInfo {
@nonobjc public class func fetchRequest() -> NSFetchRequest<PlaceInfo> {
return NSFetchRequest<PlaceInfo>(entityName: "PlaceInfo")
}
@NSManaged public var desc: String?
@NSManaged public var hasmedia: Bool
@NSManaged public var id: String?
@NSManaged public var isuploaded: Bool
@NSManaged public var title: String?
@NSManaged public var address_rel: PlaceAddress?
@NSManaged public var files_rel: NSSet?
}
// MARK: Generated accessors for files_rel
extension PlaceInfo {
@objc(addFiles_relObject:)
@NSManaged public func addToFiles_rel(_ value: FilesInfo)
@objc(removeFiles_relObject:)
@NSManaged public func removeFromFiles_rel(_ value: FilesInfo)
@objc(addFiles_rel:)
@NSManaged public func addToFiles_rel(_ values: NSSet)
@objc(removeFiles_rel:)
@NSManaged public func removeFromFiles_rel(_ values: NSSet)
}
<代码>导入基础
导入CoreData
分机位置信息{
@nonobjc公共类func fetchRequest()->NSFetchRequest{
返回NSFetchRequest(entityName:“PlaceInfo”)
}
@NSManaged public var desc:字符串?
@NSV管理的公共媒体:Bool
@NSManaged公共变量id:String?
@NSManaged公共变量已上载:Bool
@NSManaged公共变量标题:字符串?
@NSManaged公共变量地址\u rel:PlaceAddress?
@NSManaged公共var文件\u rel:NSSet?
}
//标记:为文件生成的访问器\u rel
分机位置信息{
@objc(addFiles\u relObject:)
@NSManaged public func addToFiles\u rel(\u值:FilesInfo)
@objc(removeFiles_relObject:)
@NSManaged public func removeFromFiles\u rel(\u值:FilesInfo)
@objc(addFiles\u rel:)
@NSManaged public func addToFiles\u rel(\u值:NSSet)
@objc(删除文件)
@NSManaged public func removeFromFiles\u rel(\u值:NSSet)
}
您是否添加了下面的代码行
do {
try managedObjectContext.save()
} catch {
fatalError("Failure to save context: \(error)")
}
为什么您选择向下播放
as?PlaceInfo
和作为?地点地址
?这些类肯定是在编译时存在的。强制向下广播不得失败,否则会显示开发人员/设计错误。然后你去掉所有难看的问号。如果可用(iOS 10,*)也应该对PlaceAddress
初始值设定项进行条件编译。