Too*_*dos 5 core-data ios swift
我知道obj-c但我学得很快.
在obj-c中使用核心数据时,您可以对数据建模并告诉xcode生成模型的nsmanageobject子类.然后在代码中将其初始化为
#import MyObject
- (void) someMethod
{
MyObject *my = (Card *) [NSEntityDescription insertNewObjectForEntityForName:@"Card" inManagedObjectContext:[self managedObjectContext]];
my.name = @"some name";
}
Run Code Online (Sandbox Code Playgroud)
在swift中,我正在尝试做同样的事情,但我似乎无法弄清楚如何初始化我的自定义对象.这就是我所拥有的:
生成的NSManagedObject子类:
import Foundation导入CoreData
class Card: NSManagedObject
{
@NSManaged var card_name: String
@NSManaged var card_id: String
@NSManaged var card_issuer: String
@NSManaged var card_type: String
}
Run Code Online (Sandbox Code Playgroud)
然后我试图在另一个类上使用它,像这样:
var card : Card
card.card_name = "Some Name"
card.card_issuer = "HOA"
card.card_type = "Rec Center"
card.card_id = "123"
Run Code Online (Sandbox Code Playgroud)
但我得到的错误是:
在初始化之前使用变量'card'
我显然错过了一步,但我无法指出它是什么.
另外,正如几位iOS教师提到的那样,你不应该混淆生成的NSManagedObject子类.
有什么建议?
编辑 我现在得到一个错误:(应该是一个新的SO问题...)
CoreData:警告:无法为实体'Card'加载名为'Card'的类.找不到类,而是使用默认的NSManagedObject.
以下是显示此类在构建阶段中如何存在以及实体名称是否已在xcdatamodeld文件中设置的屏幕截图

谢谢
你有这个:
var card : Card
Run Code Online (Sandbox Code Playgroud)
声明它card是类型Card但不创建实例.您需要在使用之前分配和初始化实例.这里的初始化规则与Objective-C中的相同,即您必须在对象上调用指定的初始值设定项.你会做这样的事情:
var card = NSEntityDescription.insertNewObjectForEntityForName("Card", inManagedObjectContext: self.managedObjectContext) as! Card
Run Code Online (Sandbox Code Playgroud)
对于它的价值,你的Objective-C片段是不正确的,因为init它不是指定的初始化器NSManagedObject.
| 归档时间: |
|
| 查看次数: |
12029 次 |
| 最近记录: |