我可以从文件加载的常量字符串中从Swift的init()类抛出吗?

盘带

我希望Swift的init()在将文件加载到类中的字符串时出错时抛出错误。加载文件后,字符串将不会更改,因此我更喜欢使用let这有效:

class FileClass {    
    var text: NSString = ""   
    init() throws {   
        do {
            text = try NSString( contentsOfFile: "/Users/me/file.txt", encoding: NSUTF8StringEncoding ) }
        catch let error as NSError {
            text = ""
            throw error
        }      
    }
}

但是当我更换

var text: NSString = ""

let text: NSString

我得到一个类实例所有存储属性,必须先进行初始化,然后再引发初始化错误。

我尝试了各种方法,例如使文本可选

let text: NSString?

但尚未找到任何可行的方法。是否有可能从文件中加载文本,使其不可变,并且init()会引发错误?我可以给我蛋糕吃三个吗?

提前谢谢了!

卢卡·安格莱蒂(Luca Angeletti)

[更新] Swift版本> = 2.2

从Swift 2.2开始,您可以中断类初始化程序的执行,而无需填充所有存储的属性

class FileStruct {
    let text: String

    init() throws {
        do {
            text = try String(contentsOfFile: "/Users/me/file.txt", encoding: NSUTF8StringEncoding ) }
        catch let error as NSError {
            throw error
        }
    }
}

Swift版本<= 2.1

当前,在Swift中,class您无法在初始化每个存储的属性之前中断初始化程序的执行。

在另一方面,你没有这个约束与structs如此

struct FileStruct {
    var text: String

    init() throws {
        do {
            text = try String(contentsOfFile: "/Users/me/file.txt", encoding: NSUTF8StringEncoding ) }
        catch let error as NSError {
            throw error
        }
    }
}

您也可以避免执行do / catch块

struct FileStruct {
    var text: String

    init() throws {
        text = try String(contentsOfFile: "/Users/me/file.txt", encoding: NSUTF8StringEncoding)
    }
}

最后我替换为NSStringString因为我们使用的是Swift,而不是Objective-C ;-)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我可以在protobuf中定义常量字符串吗?

来自分类Dev

我可以修改常量字符串

来自分类Dev

我们可以使用javascript中的字符串获取类的对象吗?

来自分类Dev

我可以使用数组中的字符串作为Swift中的选择器吗?

来自分类Dev

我的应用程序可以反编译以显示字符串常量吗?

来自分类Dev

我可以改善从文件中读取字符串的情况吗?

来自分类Dev

我们可以在 Chrome Storage 中存储文件而不是字符串吗

来自分类Dev

您可以在Swift中评估字符串吗?

来自分类Dev

我可以在Node中执行字符串命令吗?

来自分类Dev

我可以从字符串中获取列名吗?

来自分类Dev

我可以在python函数中搜索字符串吗?

来自分类Dev

我可以在格式字符串中添加变量吗?

来自分类Dev

字符串常量类应该是静态的吗?

来自分类Dev

字符串常量类应该是静态的吗?

来自分类Dev

我可以将重复的字符串存储在字符串数组中吗?

来自分类Dev

Google Play 控制台 - 翻译服务:我可以在 xml 文件中描述我的字符串吗?

来自分类Dev

是否可以在go中包含一个外部文件作为字符串常量?

来自分类Dev

如果字符串中包含空格,我仍然可以在字符串上使用tsort吗?

来自分类Dev

'\'可以在Python字符串中吗?

来自分类Dev

我们可以为字符串调用Object类的toString()方法吗

来自分类Dev

我可以从已知位置开始并以给定字符结束的字符串中删除子字符串吗?

来自分类Dev

我可以从Swift 5的Realm Database对象获取字符串吗?

来自分类Dev

整数常量作为字符串吗?

来自分类Dev

我可以添加到Ionic项目中的字符串或语言文件吗?

来自分类Dev

我们可以同时从C ++字符串中删除两个子字符串吗?

来自分类Dev

如何使用字符串搜索变量?/您可以在类中搜索变量吗?

来自分类Dev

我们可以修剪已经在列表中的字符串吗?在python中

来自分类Dev

我可以在Java中的onclick中的“ this”之后插入字符串吗?

来自分类Dev

在Swift中,可以使用字符串来访问struct属性吗?

Related 相关文章

  1. 1

    我可以在protobuf中定义常量字符串吗?

  2. 2

    我可以修改常量字符串

  3. 3

    我们可以使用javascript中的字符串获取类的对象吗?

  4. 4

    我可以使用数组中的字符串作为Swift中的选择器吗?

  5. 5

    我的应用程序可以反编译以显示字符串常量吗?

  6. 6

    我可以改善从文件中读取字符串的情况吗?

  7. 7

    我们可以在 Chrome Storage 中存储文件而不是字符串吗

  8. 8

    您可以在Swift中评估字符串吗?

  9. 9

    我可以在Node中执行字符串命令吗?

  10. 10

    我可以从字符串中获取列名吗?

  11. 11

    我可以在python函数中搜索字符串吗?

  12. 12

    我可以在格式字符串中添加变量吗?

  13. 13

    字符串常量类应该是静态的吗?

  14. 14

    字符串常量类应该是静态的吗?

  15. 15

    我可以将重复的字符串存储在字符串数组中吗?

  16. 16

    Google Play 控制台 - 翻译服务:我可以在 xml 文件中描述我的字符串吗?

  17. 17

    是否可以在go中包含一个外部文件作为字符串常量?

  18. 18

    如果字符串中包含空格,我仍然可以在字符串上使用tsort吗?

  19. 19

    '\'可以在Python字符串中吗?

  20. 20

    我们可以为字符串调用Object类的toString()方法吗

  21. 21

    我可以从已知位置开始并以给定字符结束的字符串中删除子字符串吗?

  22. 22

    我可以从Swift 5的Realm Database对象获取字符串吗?

  23. 23

    整数常量作为字符串吗?

  24. 24

    我可以添加到Ionic项目中的字符串或语言文件吗?

  25. 25

    我们可以同时从C ++字符串中删除两个子字符串吗?

  26. 26

    如何使用字符串搜索变量?/您可以在类中搜索变量吗?

  27. 27

    我们可以修剪已经在列表中的字符串吗?在python中

  28. 28

    我可以在Java中的onclick中的“ this”之后插入字符串吗?

  29. 29

    在Swift中,可以使用字符串来访问struct属性吗?

热门标签

归档