相关疑难解决方法(0)

Xcode NSManagedObject子类在标记为非可选时包含选项

我有一个名为Film的核心数据实体,它具有属性标题和日期.我注意到生成的NSManagedObject子类包含可选的NSManaged属性,即使我在核心数据检查器中将属性标记为非可选.

在此输入图像描述

在此输入图像描述

我可以手动将其更改为非可选属性,还是将其作为可选项更好的选择?为什么?

xcode core-data ios swift

41
推荐指数
2
解决办法
3990
查看次数

[AnyObject]?没有名为'下标'的成员

我正在将核心数据数据库中的对象列表加载到表视图中.

class ScheduleViewController: UITableViewController {

    private var items: [AnyObject]?

    // MARK: - Table view data source
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        if let itemCount = items?.count {
            return itemCount
        }
    }

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCellWithIdentifier("DayScheduleCell", forIndexPath: indexPath) as DayScheduleCell

        if let act = items[indexPath.row] as Activity {
            if act.client != nil {
                // ...
            }
        }

        return cell
    }
}
Run Code Online (Sandbox Code Playgroud)

在闭包内检索数据,因此我已将items数组声明为可选,因为它在第一次运行时可能为零.

我收到错误'[AnyObject]?' …

arrays optional ios swift

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

Core Data 代码生成器如何决定是否将属性设为可选?

我正在 macOS 10.13.6 High Sierra 上使用 Xcode 10 + Swift 4.2。我创建了一个数据模型,并让 Core Data 自动为数据模型实体生成类。在大多数情况下,这按预期工作。但是,我无法弄清楚如何预测生成的类中的某些属性是否将成为Optional类型;它似乎并不取决于相应的属性是否被声明为“可选”(即在属性描述中选中了“可选”复选框)。有人可以帮我弄清楚 Xcode 如何确定是否将类属性设为可选吗?

这是我从我的项目中得出的一个小例子。我只是用虚构的名称替换了项目特定的名称,但其他一切都相同。首先这里是从数据模型中提取的 Foo 实体的描述:

<entity name="Foo" representedClassName="Foo" parentEntity="FooParent" syncable="YES" codeGenerationType="class">
  <attribute name="v1" attributeType="Date" usesScalarValueType="NO" syncable="YES"/>
  <attribute name="v2" attributeType="Boolean" usesScalarValueType="YES" syncable="YES"/>
  <attribute name="v3" optional="YES" attributeType="Boolean" usesScalarValueType="YES" syncable="YES"/>
  <attribute name="v4" optional="YES" attributeType="UUID" usesScalarValueType="NO" syncable="YES"/>
  <attribute name="v5" optional="YES" attributeType="String" syncable="YES"/>
  <relationship name="v6" toMany="YES" deletionRule="Nullify" destinationEntity="Bar"
                inverseName="baz" inverseEntity="Bar" syncable="YES"/>
</entity>
Run Code Online (Sandbox Code Playgroud)

如您所见,v1、v2 和 v6 在数据模型中未声明为可选,而 v3、v4 和 v5 声明为可选。这是生成的代码,我在我的项目的 Xcode/DerivedData 文件夹下的 Foo+CoreDataProperties.swift 中找到了它。

extension Foo {
    @nonobjc public …
Run Code Online (Sandbox Code Playgroud)

xcode core-data swift

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

Swift - 将nil核心数据字符串作为可选值进行转换

我有一个存储在核心数据对象上的字段,称为"元数据",它是一种类型String(没有可选,因为Apple文档说不要乱用CD中的选项).有时,元数据字段为零.在检查此值是否为零时,我执行以下检查:

if object.metadata as String? != nil {
    ...
} 
Run Code Online (Sandbox Code Playgroud)

但是,我的代码在这一行上不断崩溃EXC_BAD_ACCESS.我也尝试过:

if let metadata = object.metadata as String? {
    ...
}
Run Code Online (Sandbox Code Playgroud)

哪个也行不通.我成功地将对象转换为代码的其他部分中的选项,所以我不明白为什么这个特殊情况不起作用.如何检查核心数据属性是否为零字符串?

optional ios swift

3
推荐指数
1
解决办法
3263
查看次数

CoreData:非null属性应该是可选的吗?

我不确定Swift和CoreData的最佳实践.你认为not null属性应该是可选的吗?

例如

import Foundation
import CoreData

class Item: NSManagedObject {
    @NSManaged var itemId: String // Not null property
    @NSManaged var itemPrice: String? // null is possible
}
Run Code Online (Sandbox Code Playgroud)

我想知道我应该通知其他程序员哪些属性不是null.

我想知道你通常做什么.这个问题听起来是基于意见的,但我确定如何处理可选项对其他人有帮助.

仅供参考我找到了类似的问题

CoreData - 将实体的属性设置为非null - 属性是否应设置为Optional或Mandatory

swift

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

标签 统计

swift ×5

ios ×3

core-data ×2

optional ×2

xcode ×2

arrays ×1