1

NSManagedObject私は迅速に以下を持っています:

import Foundation
import CoreData

public class User: NSManagedObject {

    @NSManaged public var first_name: String
    @NSManaged public var last_name: String
}

以下の関数で値を提供するクラスがあります。

- (id)getUserAtIndexPath:(NSIndexPath *)indexPath {
    User *user = [self.fetchedResultsController objectAtIndexPath:indexPath];
    return user;
}

Objective-Cクラスからこの関数を呼び出すと、すべて正常に動作します。私は次のように呼び出します:

User *user = [self.userAccessor getUserAtIndexPath:indexPath];

そして、私はそこから続けることができます。Swift次のようにクラスから呼び出すと:

let user: User = self.userAccessor.getUserAtIndexPath(indexPath) as User

私はswift_dynamicCastClassUnconditional毎回取得します。私が間違っていることはありますか?同じ関数が で機能し、 で機能しObjective-CないのはなぜSwiftですか? ブレークポイントを置いてSwift、戻り値が有効な変数であることを呼び出しで確認できます! いくつかの方法Swiftでそれが欠けています。

私はこれについて以下を読んでみました:

http://jamesonquave.com/blog/understanding-the-fatal-error-cant-unwrap-optional-none-errors-in-swift/

XCTestCase の Swift XCode 6 Beta 4 でキャストすると、「Swift dynamic cast failed」という NSFetchRequest エラーによって AnyObject 配列が返される

私が行方不明になっているものは他にありますか?

4

1 に答える 1

1

ここで解決策を得ました:

Swift: CoreData ライブラリのブレークポイント

基本的に、@objc(User)マネージド オブジェクト コードのすぐ上に配置する必要がありました。したがって、以下のとおりです。

@objc(User)
public class User: NSManagedObject {
    @NSManaged public var first_name: String
    @NSManaged public var last_name: String
}

これで問題は解決しました。ケースを閉じました。

于 2014-10-10T21:17:14.023 に答える