相关疑难解决方法(0)

Xcode-beta 8.无法创建核心数据

我一直在尝试添加核心数据.每次我得到同样的错误:

error: filename "EntityName +CoreDataClass.swift" used twice: '/Users/userName/Desktop/Development/MyApp/AppName/EntityName +CoreDataClass.swift' and '/Users/userName/Library/Developer/Xcode/DerivedData/AppName-dgwzrmxsetzvtedibxrazuutjwnh/Build/Intermediates/AppName.build/Debug-iphoneos/AppName.build/DerivedSources/CoreDataGenerated/Model/EntityName +CoreDataClass.swift'
Run Code Online (Sandbox Code Playgroud)

我使用以下步骤添加核心数据:
1.New file/DataModel; 将它保存在我的项目的根目录中,
选择Model.xcdatamodeld并添加实体,添加几个属性,保存,编辑/创建NSManagedObjectClass子类.

因此,我在导航器中观察到4个新文件:Model.xcdatamodeld,EntityName + CoreDataProperties.swift,EntityName + CoreDataClass.swift,_COREDATA_DATAMODELNAME_ + CoreDataModel.swift

他们的内容: _COREDATA_DATAMODELNAME_ + CoreDataModel.swift:

import Foundation
import CoreData

___COREDATA_DATAMODEL_MANAGEDOBJECTCLASSES_IMPLEMENTATIONS___
Run Code Online (Sandbox Code Playgroud)

EntityName + CoreDataClass.swift:

import Foundation
import CoreData


class EntityName: NSManagedObject {

}
Run Code Online (Sandbox Code Playgroud)

实体名称+ CoreDataProperties.swift:

import Foundation
import CoreData

extension EntityName {

    @nonobjc class func fetchRequest() -> NSFetchRequest< EntityName > {
        return NSFetchRequest< EntityName >(entityName: "EntityName");
    }

    @NSManaged var str: String?

}
Run Code Online (Sandbox Code Playgroud)

我尝试过:
1.清理构建,删除DerivedData,删除var /文件夹的内容,重启
2.删除生成的文件,在导航器中显示

我所有的努力都没有运气. …

core-data ios swift xcode8

39
推荐指数
4
解决办法
2万
查看次数

使用swift 3和Xcode 8 beta对NSManagedObject进行子类化

我开始尝试使用swift 3和Xcode 8 beta的Core数据.当我尝试从核心数据模型生成NSManagedObject子类并在编辑器菜单中创建NSManagedObject子类...选项时,Xcode 8 beta生成三个文件,其中一个是_COREDATA_DATAMODELNAME_ + CoreDataModel.swift,其中包含以下内容:

import Foundation
import CoreData

___COREDATA_DATAMODEL_MANAGEDOBJECTCLASSES_IMPLEMENTATIONS___
Run Code Online (Sandbox Code Playgroud)

此外,此文件的内容显示两个警告:

Expressions are not allowed at the top level.
Use of unresolved identifier '___COREDATA_DATAMODEL_MANAGEDOBJECTCLASSES_IMPLEMENTATIONS___'
Run Code Online (Sandbox Code Playgroud)

有没有人面临同样的问题?这个新文件的含义是什么?

谢谢

core-data nsmanagedobject swift3 xcode8

19
推荐指数
1
解决办法
2万
查看次数

'为CoreData实体创建NSManagedObject子类后的错误

我创建了2个核心数据实体,然后从编辑器菜单为它们创建了NSManagedObject子类.

但是,当我运行我的应用程序时,由于某种原因,我在所有文件的每一行都会出错.

这是一个例子,这两个实体创建的文件的错误是相同的.

在此输入图像描述

文件代码是自动生成的,所以我可以在这里使用它,但不确定它的用途

    import Foundation
import CoreData


extension UserExercise {

    @nonobjc public class func fetchRequest() -> NSFetchRequest<UserExercise> {
        return NSFetchRequest<UserExercise>(entityName: "UserExercise");
    }

    @NSManaged public var id: Int16
    @NSManaged public var name: String?
    @NSManaged public var reps: Int16
    @NSManaged public var sets: Int16
    @NSManaged public var weight: Int16
    @NSManaged public var relationship: NSSet?

}

// MARK: Generated accessors for relationship
extension UserExercise {

    @objc(addRelationshipObject:)
    @NSManaged public func addToRelationship(_ value: UserRoutine)

    @objc(removeRelationshipObject:)
    @NSManaged public func removeFromRelationship(_ value: UserRoutine)

    @objc(addRelationship:)
    @NSManaged public …
Run Code Online (Sandbox Code Playgroud)

core-data swift

19
推荐指数
3
解决办法
5563
查看次数

Xcode 8如何在Objective-C中使用核心数据代码生成类?

我正在观看本教程,在Xcode 8中使用Core Data,视频使用的是Swift.在视频中,他进入Task了核心数据模型中命名的实体,然后在他能够调用的代码中Task:

let task = Task(context: context)
Run Code Online (Sandbox Code Playgroud)

我有一个叫做的实体Tag.如何使用Objective-C在代码中访问Tag?Codegen在Core Data模型中设置,但我在项目中看不到任何其他文件.如果我尝试:

Tag test = [[Tag alloc] init];
Run Code Online (Sandbox Code Playgroud)

我收到一个Tag不存在的错误.

xcode core-data objective-c ios xcode8

6
推荐指数
2
解决办法
6097
查看次数

Coredata的CodeGen'手册/无+创建NSManagedObject子类'与'类别/扩展'之间的功能差异是什么?

我已经阅读了使用swift 3和Xcode 8 beta对NSManagedObject进行Subclassing,并阅读了这篇精彩的教程.在某些方面仍有疑问.

相似之处是:

  1. 我可以自定义两个类,但我喜欢.
  2. 我可以添加新属性或删除或重命名属性.即因为category/extension它将在新的构建(在派生数据中)得到更新,并且在manual/none它的情况下将保持类文件完整并更新文件导航中的扩展名,即我不会最终得到重复文件.这全部由Xcode处理,因为它们标有预处理器@NSManaged
  3. 不允许将类似内容@NSManaged public var name: String?直接转储到现有NSManagedObject子类中.我试过 entity.name = "John"但是我得到了以下错误: reason: '-[SomeEntity setName:]: unrecognized selector sent to instance 0x60400009b120'.我认为这是合理的.我认为不使用核心数据模型编辑器就不会创建setter/getter访问器方法.

不同之处是:

  1. 对于Category/Extension你只需要自己创建类,并添加您需要任何额外的功能/性能.
  2. 因为Category/Extension属性是在派生数据中创建的,这就足够了.因为你永远不需要看到那个文件.它的存在足以使事情发挥作用.

    
特别是在更改 NSManaged属性的上下文中:

  3. 更改属性类型,例如NSDate以Date只允许为Manual/None.这里的例子

  4. 更改类型的可选性,如String?以String只允许为Manual/None.这里的例子
  5. 仅允许更改属性访问级别,例如从更改public到.这里的例子privateManual/None

  6. 如果我选择了Manual/Nonecodegen但是没有选择'create …

xcode core-data nsmanagedobject swift

6
推荐指数
1
解决办法
355
查看次数

标签 统计

core-data ×5

swift ×3

xcode8 ×3

ios ×2

nsmanagedobject ×2

xcode ×2

objective-c ×1

swift3 ×1