相关疑难解决方法(0)

我可以安全地删除Xcode Derived数据文件夹的内容吗?

我的磁盘空间不足并通过第三方实用程序检查,其中〜/ Library/Developer/Xcode/DerivedData目录占用了大约22GB的磁盘空间.

我搜索了stackoverflow并找到了这篇文章

如何在〜/ Library/Developer/Xcode/DerivedData目录中安全删除?

这个问题的接受答案表明我不应该触摸/删除此目录中的文件夹.所以我做的是

  • 找到我在Appstore上可用的应用程序的现有构建项目文件夹
  • 从派生目录中删除了该文件夹
  • 推出了XCode 5
  • 打开那个项目
  • 清洁构建
  • 在模拟器上测试并编译它
  • ReArchived
  • 一切正常.什么都没有打破.

除非我错过了帖子中的答案,否则我想通过询问有经验的开发人员来确保如果我从DerivedData中删除所有文件夹,那么在构建,测试和编译这些项目时不会对我造成伤害.

xcode ios

277
推荐指数
7
解决办法
20万
查看次数

核心数据:无法将"MyType_MyType_2"类型的值转换为MyType

我有一个Objective-C模型类MyType.这个类用在Swift代码中:

NSEntityDescription.insertNewObjectForEntityForName("MyType", inManagedObjectContext: context) as! MyType
Run Code Online (Sandbox Code Playgroud)

as!投导致错误信息

Core Data: Could not cast value of type 'MyType_MyType_2' (0x7be99a30) to MyType (0xf33db74).
Run Code Online (Sandbox Code Playgroud)

如果我按照NSManagedObject它的方式投射它.当我打印结果时,我仍然可以看到,它是MyType的实际实例:

<MyType: 0x7ae06d50> (entity: MyType; id: 0x7aeba6d0 <x-coredata:///MyType/t957F2860-85F8-46E0-B6D6-4D1DF6C4EC613> ; data: { 
    ...the fields...
})
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?这个名字MyType_MyType_2来自哪里?

casting core-data nsmanagedobject swift

27
推荐指数
3
解决办法
8998
查看次数

如何在Objective C而不是Swift中生成NSManagedObject类?

我将coreData swift类定义为

import Foundation
import CoreData

@objc(Users)
public class Users: NSManagedObject {

}
Run Code Online (Sandbox Code Playgroud)

文件名是

Users+CoreDataClass.swift
Run Code Online (Sandbox Code Playgroud)

我需要称之为

NSFetchRequest* request = [Users fetchRequest];
Run Code Online (Sandbox Code Playgroud)

我尝试导入"Users+CoreDataClass-Swift.h"但是它没有识别任何具有用户名的类.

我错过了什么.

xcode core-data objective-c swift swift3

9
推荐指数
1
解决办法
3821
查看次数

在Xcode 8.2 beta中创建NSManaged Subclass时出错

我收到此错误似乎警告我重复文件.我错过了什么或Xcode现在不需要创建nsmanaged子类来操作核心数据.我尝试创建一个空白项目,同样的事情发生了.这是错误数据

<unknown>:0: error: filename "Card+CoreDataClass.swift" used twice: '/Users/user/Documents/Developer/coredata/Card+CoreDataClass.swift' and '/Users/user/Library/Developer/Xcode/DerivedData/coredata-gicbdltjgiidbcfxaqqaxvkqwnnk/Build/Intermediates/coredata.build/Debug-iphonesimulator/coredata.build/DerivedSources/CoreDataGenerated/coredata/Card+CoreDataClass.swift'
<unknown>:0: note: filenames are used to distinguish private declarations with the same name
<unknown>:0: error: filename "Card+CoreDataProperties.swift" used twice: '/Users/user/Documents/Developer/coredata/Card+CoreDataProperties.swift' and '/Users/user/Library/Developer/Xcode/DerivedData/coredata-gicbdltjgiidbcfxaqqaxvkqwnnk/Build/Intermediates/coredata.build/Debug-iphonesimulator/coredata.build/DerivedSources/CoreDataGenerated/coredata/Card+CoreDataProperties.swift'
<unknown>:0: note: filenames are used to distinguish private declarations with the same name
Command /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc failed with exit code 1
Run Code Online (Sandbox Code Playgroud)

这意味着我已经自动创建了文件.我甚至可以制作一个Card对象,而无需手动创建子类.谢谢.

xcode core-data ios

7
推荐指数
1
解决办法
1254
查看次数

NSManagedObject子类中的重复符号错误

我只是简单地用Core Data创建了一个演示项目.

Userinfo在我的数据模型中创建了一个实体.现在我创建了NSManagedObject这个实体的子类.

Xcode自动生成了这4个类.

在此输入图像描述

现在,当我构建项目时,它会抛出此错误:

在此输入图像描述

我已经做了我所知道的一切,以消除重复的错误,但没有任何帮助.

我认为这是一个Xcode错误.请帮忙.

core-data objective-c nsmanagedobject ios swift

5
推荐指数
1
解决办法
2293
查看次数

更新Xcode 8核心数据NSManagedObject子类更改的Objective C项目的正确方法

我从编码中休息了几个月然后回来发现CoreData与Xcode8/iOS10/macOS Sierra的变化.

我一直试图在Objective C中围绕新的NSManagedObject子类生成,但网上的内容很少.在我开始屠宰我的项目并完全搞砸了之前,我需要澄清一些事情,首先,我发现的一些事情可能对其他人有用...

事情在哪里

自动生成的文件深埋在DerivedData文件夹中.查看USER-> Library-> Developer-> Xcode-> DerivedData-> ProjectName-lotsOfRandomLetters-> Build然后继续打开文件夹,直到找到DerivedSources-> CoreDataGenerated.

自动生成的文件不会出现在项目文件夹或导航器中,但如果一个Xcode中存在错误,则会显示源代码.

Xcode生成的东西

有三种codegen设置 - 手动/无,类定义和类别/扩展.

当实体codegen设置为manual/none(这是旧行为)时使用Editor-> Create创建NSmanagedObject子类NSManagedObject Subclass在项目中生成4个文件...

实体+ CoreDataClass.h和实体+ CoreDataClass.m和实体+ CoreDataProperties.h和实体+ CoreDataProperties.m

(以前的版本Xcode 7生成了Entity.h,Entity.m,Entity + CoreDataProperties.h和Entity + CoreDataProperties.m文件)

如果实体的codegen设置为Class Definition,Xcode会在派生数据文件夹中自动生成这4个相同的文件 - 而不是项目.然后这些文件会标记一条注释,告诉您不要更改它们.

如果实体codegen设置为Category/Extension,Xcode将生成2个文件.这些文件标有注释,告诉您不要更改它们.这些是...

Entity + CoreDataProperties.h和Entity + CoreDataProperties.m

这两个文件期望Entity.h文件在项目中,如果不存在则会在Xcode中显示错误.这是您有一次能够在Xcode中查看其中一个文件的来源.

什么是这些文件

+ CoreDataProperties文件看起来与生成以前版本的Xcode生成文件的文件相同,只有一个添加.它们包含实体/ NSmanagedObject的所有属性/属性以及处理具有一对多或多对多关系的实体的方法.新增加的是fetchRequest子类化NSmanageObject的新fetchRequest方法的方法.

问题

1)当您没有任何额外的属性/功能添加到NSManagedObject子类时,类定义现在是codegen的明显和最佳选择,因为它会自动为您更新文件(当您使用cmd -s保存项目时) ?

2)使用+ CoreDataClass命名文件遵循类的类别约定,这意味着应该有一个类作为扩展.

假设Entity + CoreDateClass .h/m文件是旧Entity.h/m文件的直接替换,我是否正确?并且它实际上不是一个类别,尽管文件名?

3)对于新的NSManagedObject子类,我应该导入Entity + CoreDataClass.h而不是Entity.h吗?

4)如果我想通过删除大部分NSManagedObject子类文件来整理我的项目,我只是删除Xcode中的文件并将实体codegen设置为Class Definition或...

当你尝试#import entity.h或者我必须经历并查找#import entity.h的每个引用并将它们更改为#import entity + CoreDataClass.h时,是否存在寻找实体+ CoreDataClass的魔法? ?

5)我是否正确地假设如果我想要一个NSManagedObject子类我要添加一个属性和一个方法,我应该将codegen设置为Category/Extension?

6)如果我选择Category/Extension我必须创建自己的NSmanagedObject子类文件,它只是entity.h而不是entity + CoreDataClass.h?

7)如果entity + …

core-data objective-c nsmanagedobject ios10 xcode8

5
推荐指数
1
解决办法
1030
查看次数

标签 统计

core-data ×5

ios ×3

nsmanagedobject ×3

objective-c ×3

swift ×3

xcode ×3

casting ×1

ios10 ×1

swift3 ×1

xcode8 ×1