在Swift中调用String上的NSString方法

 唐吉诃德 发布于 2023-01-12 07:11

Apple的Swift 文档说明了这一点

如果您在Cocoa或Cocoa Touch中使用Foundation框架,则可以使用整个NSString API调用您创建的任何String值

如果我有一个String对象,例如

var newString: String = "this is a string"

如何containsString在我的String var上执行NSString操作?

2 个回答
  • 方法是相同的,但它们只是使用swift的语法.例如:

    var newString: String = "this is a string"
    newString = newString.stringByAppendingString(" that is now longer")
    println(newString)
    

    代替:

    NSString* newString = @"this is a string";
    newString = [newString stringByAppendingString:@" that is now longer"];
    NSLog(newString);
    

    注意:

    并非所有NSString的方法都可以在String上调用.有些你必须首先桥接到NSString:

    newString.bridgeToObjectiveC().containsString("string")
    

    2023-01-12 07:20 回答
  • 做了一些研究之后,它看起来containsString不是一个String功能,但可以通过桥接来访问NSString.

    在Apple关于将Swift与Cocoa和Objective-C一起使用的文档中,它说

    Swift自动在String类型和NSString类之间架起桥梁.这意味着在使用NSString对象的任何地方,您都可以使用Swift String类型,并获得两种类型的好处

    但似乎只有部分NSString的函数可以在没有明确桥接的情况下访问.要桥接到NSString并使用其任何功能,以下方法有效:

     //Example Swift String var
        var newString:String = "this is a string"
    
        //Bridging to NSString
        //1
        (newString as NSString).containsString("string")
        //2
        newString.bridgeToObjectiveC().containsString("string")
        //3
        NSString(string: newString).containsString("string")
    

    所有这三项工作.有趣的是,只有一些NSString方法可用,Strings而其他方法需要明确的桥接.这可能是随着Swift的发展而建立的.

    2023-01-12 07:21 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有