2016-10-31 6 views
0
if let context = delegate?.managedObjectContext { 


     do { 

     let fetchRequest = NSFetchRequest<Message>(entityName: "Message") 

      let messages = try(context.fetch(fetchRequest) as? [Message]) 

を成功これはエラー条件キャストは常に

  for message in messages! { 
       context.delete(message) 

      } 
      try(context.save()) 

     } catch let err { 
      print (err) 
     } 

の "[メッセージ]の[メッセージ]から条件付きキャストが常に成功する" 私を与えます誰かが私が間違っていることを理解するのを助けることができますか?

+1

'as? [Message] 'この文脈では必須ではないようですが、返される値は' [Message] 'としてキャストされており、あなたからの明示的キャストは必要ありません。 – holex

答えて

3

速攻3より前には、context.fetch()が返されたのは[AnyObject]でした。それで、あなたはそれをそのようにキャストしなければならなかったのです。

スウィフト3では、NSFetchRequestクラスが汎用となり、context.fetch()は、フェッチ要求の作成時に指定した汎用タイプの配列を返します。これは今より多くの型の安全です。

したがって、すでにがそのタイプのであるため、もうタイプする必要はありません。

let messages = try context.fetch(fetchRequest) 
関連する問題