2016-09-24 6 views
1

Xcodeの最終更新後、私のコードを迅速な3言語に更新することを提案しました。 XCodeはこのアップデートを手伝ってくれました。手動でアップデートする必要があるものを修正した後、私はどのようにして行うのかわからない1つの変換を実行しました。すぐに孤立したオブジェクトのRestkitと削除3

これはRestkitの孤立したオブジェクトの削除についてです。ここでは、迅速な3から2 SWIFTの更新のためのXCodeによって生成されたコードがあります:

 // fetchRequestBlock to delete orphaned objects ------ tmenus -------- 
    manager?.addFetchRequest { (url:URL!) -> NSFetchRequest<AnyObject>! in 
     let pathMatcher = RKPathMatcher(pattern: config.getDataPath) 
     let match = pathMatcher.matchesPath(url.relativePath, tokenizeQueryStrings: false, parsedArguments: nil) 
     guard match else { 
      return nil 
     } 
     let fetchRequest = NSFetchRequest(entityName: "TipoMenuEntity") 
     return fetchRequest 
    } 

そしてエラーがそれはを示しています

/Users/mast/work/gColegios/iOSapp/gColegios/AppDelegate.swift:417:34: Cannot convert value of type '(URL!) -> <<error type>>' to expected argument type '((URL?) -> NSFetchRequest<NSFetchRequestResult>?)!' 

だから、私はコードをを更新しました迅速にリクエストを管理する新しい方法3:

// fetchRequestBlock to delete orphaned objects ------ tmenus -------- 
    manager?.addFetchRequest { (url:URL!) -> NSFetchRequest<TipoMenu>! in 
     let pathMatcher = RKPathMatcher(pattern: config.getDataPath) 
     let match = pathMatcher.matchesPath(url.relativePath, tokenizeQueryStrings: false, parsedArguments: nil) 
     guard match else { 
      return nil 
     } 
     let fetchRequest: NSFetchRequest<TipoMenu> = TipoMenu.fetchRequest() 
     return fetchRequest 
    } 

そして今、それは新しいエラーを示しています。私はすべて試してみました

/Users/mast/work/gColegios/iOSapp/gColegios/AppDelegate.swift:418:34: Cannot convert value of type '(URL!) -> NSFetchRequest<TipoMenu>!' to expected argument type '((URL?) -> NSFetchRequest<NSFetchRequestResult>?)!' 

を:変更 '(URL!) - > NSFetchRequestを!' '((URL?) - > NSFetchRequest?)!' 、との間のすべての種類の組み合わせ?そして!

誰でもこの問題を解決できますか?事前

+0

パラメータと戻り値は両方ともオプションである必要があります – Wain

答えて

0

エラーで

おかげで、基本的にはNSFetchRequestResultを期待していると言います。結果は例えばNSAsynchronousFetchResultです。あなたはリクエストを使用しています。

+0

もう少し説明してください。 –

+0

'TipoMenu'の代わりに' NSAsynchronousFetchResult'を使います。型チェックは失敗しています。あなたの 'TipoMenu'は' NSManagedObject'のサブクラスだと思います。 'NSFetchRequestResult'のサブクラスを使用してください。 –

1

まあ、それは明らかに迅速3であるため、他の要求で、作成される要求のためのNSFetchRequestを配置する必要があったということでした私を混同しては何正しいコードが

 // fetchRequestBlock to delete orphaned objects ------ tmenus -------- 
    manager?.addFetchRequest { (url:URL?) -> NSFetchRequest<NSFetchRequestResult>? in 
     let pathMatcher = RKPathMatcher(pattern: config.getDataPath) 
     if let match = pathMatcher?.matchesPath(url?.relativePath, tokenizeQueryStrings: false, parsedArguments: nil) 
     { 
      if (match) 
      { 
       let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "TipoMenuEntity") 
       return fetchRequest 
      } 
     } 
     return nil 
    } 

だったことが判明しましたNSManagedObjectクラスは、NSFetchRequestのデリゲートに準拠するようにコードを拡張します。

しかし、ここではXCodeがそれをswift 3に適合させるために完成した関数のヘッダーだけでした。そこで、このヘッダーを修正し、このバージョンの新しいオプションにコードを適合させるだけでした。

ありがとうございました。

関連する問題