代码之家  ›  专栏  ›  技术社区  ›  Abdulmoiz Ahmer

“无法打开文件__photo.jpg__,因为可以确定其内容的文本编码。”iOS Swift中的错误

  •  1
  • Abdulmoiz Ahmer  · 技术社区  · 6 年前

    我刚接触过iOS。我使用了FireBase Google和Facebook认证,注册时获得了当前用户的照片URL。我用过 PINRemoteImage library 要获取图像并将其设置为ImageView,但是在测试时,我得到以下错误。

    Domain=NSCocoaErrorDomain Code=264 "The file “photo.jpg” couldn’t be opened because the text encoding of its contents can’t be determined." UserInfo={NSURL= https://lh6.googleusercontent.com/-VImwCn8xJng/AAAAAAAAAAI/AAAAAAAAAAc/Qlp17u7Qxzs/s96-c/photo.jpg }

    下面是访问图像的代码:

    let userInfo = network.getCurrentUserDate()
            setTextFields(userInfo: userInfo)
    
    
    func setTextFields(userInfo:UserData){
            do{
                try profileImage.pin_setImage(from: URL(string: String(contentsOf: userInfo.getImageUrl()))!)
            }catch{
                print(error)
            }
        }
    

    在这里 network 是以下类的对象

    class Networking{
        func getCurrentUserDate()->UserData{
            let currentUser = Auth.auth().currentUser
            return UserData(username: (currentUser?.displayName)!, email: 
            (currentUser?.email)!, url: (currentUser?.photoURL)!)
        }
    }
    
    //Here userinfo is object of following class 
    
    class UserData{
        var userName:String
        var useremail:String
        var imageUrl:URL
    
        init(username:String,email:String,url:URL) {
            userName = username
            useremail = email
            imageUrl = url
        }
    
        func getuserName() -> String {
            return userName
        }
    
        func getEmail() -> String {
            return useremail
        }
    
        func getImageUrl() -> URL {
            return imageUrl
        }
    }
    

    有人能告诉我我的密码有什么问题吗

    1 回复  |  直到 6 年前
        1
  •  1
  •   vadian    6 年前

    首先,你不需要 get...() 方法,只使用例如 userInfo.imageUrl

    class UserData {
        var userName: String
        var useremail: String
        var imageUrl: URL
    
        init(username: String, email: String, url: URL) {
            userName = username
            useremail = email
            imageUrl = url
        }
    }
    

    如果你声明 UserData 作为 struct 你甚至不需要初始值设定项

    struct UserData {
        var userName, useremail: String
        var imageUrl: URL
    } 
    

    如果这三个属性/成员不变,则将它们声明为常量

    struct UserData {
        let userName, useremail: String
        let imageUrl: URL
    } 
    

    发生错误的原因是没有 String 在给定的URL上,图像保存为原始 Data

    使用 imageUrl 直接,更改 setTextFields

    func setTextFields(userInfo: UserData) {
        do {
            try profileImage.pin_setImage(from: userInfo.imageUrl)
        } catch {
            print(error)
        }
    }