2016-08-06 4 views
1

swiftfirebase을 사용하여 채팅 앱을 만들고이 오류가 발생하는 중입니다. 아래 코드를 보아라. 나는 아직도 틀린 것을 이해할 수 없다 !! JSQMessageViewController도 사용하고 있습니다.'NSURL.Type'유형의 값을 예상되는 인수 유형 'NSURL'로 변환 할 수 없습니다.

func sendMedia(picture: UIImage?, video: NSURL?) { 
    print(picture) 
    print(FIRStorage.storage().reference()) 
    if let picture = picture { 
     let filePath = "\(FIRAuth.auth()!.currentUser?.uid)/\(NSDate.timeIntervalSinceReferenceDate())" 
     print(filePath) 
     let data = UIImageJPEGRepresentation(picture, 0.1) 
     let metadata = FIRStorageMetadata() 
     metadata.contentType = "image/jpg" 
     FIRStorage.storage().reference().child(filePath).putData(data!, metadata: metadata) { (metadata, error) in 
      if error != nil { 
       print(error?.localizedDescription) 
       return 
      } 
      let fileUrl = metadata!.downloadURLs![0].absoluteString 
      let newMessage = self.messageRef.childByAutoId() 
      let messageData = ["fileUrl": fileUrl, "senderId": self.senderId, "senderName": self.senderDisplayName, "MediaType": "PHOTO"] 
      newMessage.setValue(messageData) 
     } 
    }else if let video = video { 
     let filePath = "\(FIRAuth.auth()!.currentUser?.uid)/\(NSDate.timeIntervalSinceReferenceDate())" 
     print(filePath) 
     let data = NSData(contentsOfURL: video) 
     let metadata = FIRStorageMetadata() 
     metadata.contentType = "video/mp4" 
     FIRStorage.storage().reference().child(filePath).putData(data!, metadata: metadata) { (metadata, error) in 
      if error != nil { 
       print(error?.localizedDescription) 
       return 
      } 
      let fileUrl = metadata!.downloadURLs![0].absoluteString 
      let newMessage = self.messageRef.childByAutoId() 
      let messageData = ["fileUrl": fileUrl, "senderId": self.senderId, "senderName": self.senderDisplayName, "MediaType": "VIDEO"] 
      newMessage.setValue(messageData) 
     } 

    } 
} 

} 

extension ChatViewController: UIImagePickerControllerDelegate, UINavigationControllerDelegate { 
    func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) { 
     print("Did finish picking") 
     //get the image 
     print(info) 
     if let picture = info[UIImagePickerControllerOriginalImage] as? UIImage { 
      let photo = JSQPhotoMediaItem(image: picture) 
      messages.append(JSQMessage(senderId: senderId, displayName: senderDisplayName, media: photo)) 
      sendMedia(picture, video: nil) 
     } 
     else if let video = info[UIImagePickerControllerMediaURL] as? NSURL { 
      let videoItem = JSQVideoMediaItem(fileURL: video, isReadyToPlay: true) 
      messages.append(JSQMessage(senderId: senderId, displayName: senderDisplayName, media: videoItem)) 
      sendMedia(nil, video: NSURL) 
     } 
     self.dismissViewControllerAnimated(true, completion: nil) 
     collectionView.reloadData() 
    } 
} 

오류가 NSURl 유형과 관련되어 있으면이를 해결하는 방법을 알 수 없습니다. 이 라인에서

답변

1

:

sendMedia(nil, video: NSURL) 

당신은 두 번째 매개 변수 videoNSURL 전달된다. (. video: 그냥 매개 변수 레이블입니다 기억)

은 아마 당신은로 작성해야합니다 :

sendMedia(nil, video: video) 
+0

덕분에 지금 작동한다! –

관련 문제