我有一个名为Record的coredata实体,并且有一个属性dateUpdated.我注意到生成的NSManagedObject子类没有可选标记(?)
CoreData编辑器:

生成的子类:

预期:

更新: 这是乏味的在我的部分,因为我想再生子类每一次,这意味着我还需要手动更新所有可选值.在子类中使用非可选(不带'?')会导致我在分配之前检查evalue,如下例所示:
// sample value:
// serverDateFormatter = "yyyy/MM/dd"
// dateString = ""
// Branch is a subclass of Record (see above images)
var date = self.coreData.serverDateFormatter.dateFromString(dateString)
if date != nil
{
branch.dateUpdated = date
}
Run Code Online (Sandbox Code Playgroud)
但是如果xcode可以在子类中使用(?)自动设置可选值,我只需要这样做:
branch.dateUpdated = self.coreData.serverUTCDateFormatter.dateFromString(dateString)
Run Code Online (Sandbox Code Playgroud)
在我的情况下,我有一堆属性需要手动标记为可选.
如何检查是否在Core Data Object中设置了属性?
我将所有核心数据对象加载到目录中:
var formQuestions = [Questions]()
Run Code Online (Sandbox Code Playgroud)
我的核心数据NSManagementObject是:
@NSManaged var noticeText: String
Run Code Online (Sandbox Code Playgroud)
formQuestions [indexPath.row] .noticeText
//加载:
var fetchRequest = NSFetchRequest(entityName: "Questions")
fetchRequest.predicate = NSPredicate(format: "forms = %@", currentForm!)
formQuestions = context.executeFetchRequest(fetchRequest, error: nil) as [Questions]
Run Code Online (Sandbox Code Playgroud)
我的属性"noticeText"可能是空的或不是,所以当我创建我的核心数据对象时,可能无法设置某些值.(该属性在Core Data中设置为可选)
当我现在尝试证明是否有值时,它总是给我带来"EXC_BAD_ACCESS ......"
if(formQuestions[indexPath.row].noticeText.isEmpty == false)
Run Code Online (Sandbox Code Playgroud)
我在创建核心数据对象时可以设置一个空字符串,但这应该不是一个好的解决方案.
那么如何检查(optinal)和未设置的值是否存在?
提前致谢.