相关疑难解决方法(0)

Swift + CoreData:无法在生成的NSManagedObject子类上自动设置可选属性

我有一个名为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)

在我的情况下,我有一堆属性需要手动标记为可选.

subclass nsmanagedobject ios swift

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

检查核心数据中是否设置了属性?

如何检查是否在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)和未设置的值是否存在?

提前致谢.

core-data ios swift

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

标签 统计

ios ×2

swift ×2

core-data ×1

nsmanagedobject ×1

subclass ×1