问题标签 [mogenerator]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
objective-c - Core Data 中的“原始”访问器是什么?
从核心数据编程指南(我的重点):
默认情况下,Core Data 为托管对象类的建模属性(属性和关系)动态创建高效的公共和原始get 和 set 访问器方法。
虽然自从我开始使用 Objective-C 以来,我一直在愉快地使用 Core Data 和mogenerator,但我从来没有看过这意味着什么,直到由于涉嫌使用私有 API 而导致应用提交被拒绝。关于生成setPrimitiveTypeValue:
方法的长篇故事,但不是我的问题。
在阅读指南时,我偶然发现了实体属性的公共和原始访问器的想法。另一个引用,但更进一步:
例如,给定一个具有属性 的实体
firstName
,Core Data 会自动生成firstName
、setFirstName:
、primitiveFirstName
和setPrimitiveFirstName:
。
原始访问器有什么用?只是为了让您可以直接分配一个 BOOL 值,而无需将其包装在 NSNumber 中吗?如果是这样,为什么 mogenerator 会遇到生成各种<Attribute>Value
, set<Attribute>Value:
, primitive<Attribute>Value
,setPrimitive<Attribute>Value:
访问器的麻烦?
我很困惑,谁能帮帮我?
相关问题:
- 核心数据原始访问器(无答案)
- 为什么我需要在核心数据项目中使用原始访问器方法?(已回答)
objective-c - 如何使用 Doxygen 记录在不同文件中声明的属性?
我使用mogenerator生成核心数据类。Mogenerator 生成机器类和人类类。开发人员不应该修改机器生成的类,因为每次调用 mogenerator 时都会生成这些类。然而,人类类可以根据开发人员的喜好进行修改。
机器类包含核心数据实体的每个属性的声明。在 Doxygen 中,如何从文件 B 中记录文件 A 中定义的属性?
编辑:添加示例来说明问题
例子:
最终,这里的目标与下面的示例类似。
FileA.h(不能修改)
文件B.h
尝试过(@interface FileB @end bock 内的文档块):
@property myProperty - Doxygen 没有将文档与属性相关联。
\property myProperty - Doxygen 不会将文档与属性相关联。
@property FileA::myProperty - Doxygen 不会将文档与属性关联并生成;警告:没有为 FileB::myProperty 找到唯一匹配的类成员
\property FileA::myProperty - 同上
解决方案
文件B.h
ios - 如何将类型安全的结构类型核心数据属性与 mogenerator 一起使用?
对于 NSKeyValueCoding 可以处理的结构类型的属性,我使用此处Apple 文档中描述的核心数据访问器模式。
例如,可以在 Core Data 模型中将 NSRange 结构指定为 Transformable 类型,然后可以通过在以下形式的 NSManagedObject 子类中提供访问器来避免客户端的 NSValue 繁琐:
界面:
执行;
然而,Mogenerator 生成的 NSManagedObject 子类将 Transformable 属性声明为 NSObject 属性,因此客户端需要获取/设置 NSValues。
使用 mogenerator 处理这种情况的最佳方法是什么,同时 (1) 保持简单的 Transformable 模式而不是弄乱瞬态支持属性,以及 (2) 避免对 Mogenerator 的“机器”类进行任何编辑?
ios - 发电机ios
我安装了Mogenerator。现在我该怎么办?我该如何使用它?
我遇到的第一个问题是我不知道检查复选框“仅在安装时运行脚本”是否为 mogenerator ?
objective-c - 扩展核心数据生成的 NSManagedObject 类
我第一次处理 Core Data,我想知道扩展 Xcode 为我的 NSManagedObject 实体生成的类的最佳实践是什么。
我看到了mogenerator并且我也一直在使用与SUPER HAPPY EASY FETCHING IN CORE DATA中建议的方法类似的方法。所以我有三种课程:
- EasyFetching 类(只有一个类);
- 一个生成的 NSManagedObject 子类(即:_Entity);
- 具有一些自定义方法的自定义子类,例如查找所有非活动对象、清除对象的缓存等(即:实体)。
这种方法让我可以编写一些自定义代码,同时我可以重构我的核心数据实体并根据需要多次生成它。但是我也遇到了一些问题,比如无法为我的实体声明对象级方法(因为 NSManagedObjectContext 只知道我的 _Entity 类)。
现在我正在使用类别来扩展我的实体功能。这工作得更好,因为我可以有自定义对象级别的方法。我现在有三种类:
- EasyFetching 类别(因为它有很多我所有的自定义代码都使用的方法);
- 一个生成的 NSManagedObject 子类(即:Entity);
- 我的 NSManagedObject 实体的自定义类别(即:Entity+Custom.h)。
我的问题是:你会推荐什么?
提前感谢您的回答
reserved-words - Mogenerator 和 setPrimitiveType
我有大约六张来自旧版 Web 服务器的表。这些表都有一个“类型”列。我需要在应用程序级别保持这些列名同步。
使用 mogenerator,它创建的基类尽职尽责地生成setPrimitiveType属性。好吧,Apple 不喜欢这种方法并拒绝了我们的应用程序。
是否可以将 mogenerator 更改为不创建模型属性的某些方法?
objective-c - 发电机上的新对象
我是使用 Mogenerator 的新手(看起来很棒!)。我只是不知道等效的句子如何: NSManagedObject *mo = [NSEntityDescription ...]
我应该如何在 Mogen 中创建新对象?
提前致谢。
ios - 即使数据模型包含实体, mogenerator 也不会生成任何实体。报告“在模型中找不到实体。不会生成任何文件。”
我正在尝试让 mogenerator(最新 1.26)从核心数据模型(xcdatamodel)生成一些样板类,它报告:
即使 xcdatamodel 的内容明确存在
我究竟做错了什么?
我正在使用 Xcode 4.4.1 和 mogenerator 1.26
cocoa - 带有 Core Data/Mogenerator 的 OCMock 抛出异常 NSInvalidArgumentException [NSProxy doesNotRecognizeSelector]
我在单元测试中使用 OCMock 来模拟 NSManagedObjects。我使用 Mogenerator 为我的核心数据对象生成机器和人类可读的文件。我试图模拟一个 NSManagedObject 以返回一个布尔值和一个字符串。两者都是我的核心数据实体的属性。当我模拟 时BOOL
,该值从对象正确返回,我的类使用它,并且测试成功通过。当我尝试NSString
在同一个对象上存根属性时,它会抛出一个NSInvalidArgumentException [NSProxy doesNotRecognizeSelector]
.
这是调用代码:
这是一个例外:
我知道有一些建议在 NSManagedObject 前面有一个用于测试目的的接口,但这似乎在 Mogenerator 机器/人类文件之上增加了复杂性。
在不完全重新配置此代码的情况下,是否有任何其他建议?该代码已经投入生产,我们正在尝试在开发新功能时添加单元测试。
core-data - CoreData:Mogenerator 与类别
我最近从外部开发人员那里继承了一个 CoreData 项目。在我希望找到所有自动生成的 NSManagedObject 子类的地方,我却拥有(一些谷歌搜索显示的)由 Mogenerator 生成的类,这是一个我没有经验的工具。
我了解使用此工具的目的是使您可以将自定义代码添加到与 CoreData 实体对应的类中,而不必担心在模型更改和重新生成类时它会丢失...但是我可以无论如何,通过使用类别。
我目前没有看到使用 Mogenerator 超过类别的真正优势。
使用 Mogenerator 与类别的优点/缺点是什么?Mogenerator 是否有其他用途?