Fundation框架(一)

本文内容包括 NSNumber、NSString、NSArray、NSDictionary、NSSet

NSNumber

数字格式化用法

let number = 123456789
let numberObj = NSNumber(integerLiteral: number)

//1、设置数字格式化
let numberformatter = NumberFormatter()

//2、十进制数字
numberformatter.numberStyle = .decimal
var strNumber = numberformatter.string(from: numberObj)
print(strNumber!)  //123,456,789

//3、科学计数法
numberformatter.numberStyle = .scientific
strNumber = numberformatter.string(from: numberObj)
print(strNumber!)   //1.23456789E8

//4、百分数
numberformatter.numberStyle = .percent
strNumber = numberformatter.string(from: numberObj)
print(strNumber!)   //12,345,678,900%

//5、货币
numberformatter.numberStyle = .currency
strNumber = numberformatter.string(from: numberObj)
print(strNumber!)   //¥123,456,789.00

//6、大写数字
numberformatter.numberStyle = .spellOut
strNumber = numberformatter.string(from: numberObj)
print(strNumber!)   //一亿二千三百四十五万六千七百八十九

//7、设置本地化标识
numberformatter.locale = Locale(identifier: "en_US")
numberformatter.numberStyle = .currency
strNumber = numberformatter.string(from: numberObj)
print(strNumber!)   //$123,456,789.00
numberformatter.numberStyle = .spellOut
strNumber = numberformatter.string(from: numberObj)
print(strNumber!)   //one hundred twenty-three million four hundred fifty-six thousand seven hundred eighty-nine

NSNumber 与 swift 原生数字类型之间的桥接

let numberValue = 123

//基本数据类型转换为number
let numberObj1 = NSNumber(integerLiteral: numberValue)  //通过构造函数转换
let numberObj2 = numberValue as NSNumber                //桥接转换
//number转换为基本数据类型
let changeValue1 = numberObj1.intValue                  //通过方法转换
let changeValue2 = numberObj1 as? Int                   //桥接转换

NSString

不可变字符串基本用法

var str1 = "abcde"
var str2: NSString = "12345"
var str: NSString

//1、字符个数
print(str1.characters.count)    //5
print(str2.length)              //5

//2、创建一个新的字符串
str = NSString(string: str2)
print(str)   //12345

//3、拼接字符串
str = str2.appending(str2 as String) as NSString
print(str)  //1234512345

//4、判断字符串是否相等
if str.isEqual(to: str2 as String) {
    //相等
} else {
    //不相等
}

//5、比较字符串大小
let result: ComparisonResult = str.compare(str2 as String)
switch result {
case .orderedAscending:
    print("大于")
case .orderedSame:
    print("等于")
case .orderedDescending:
    print("小于")
}

//6、大写字符串
print(str1.uppercased())   //ABCDE

//7、小写字符串
print(str1.lowercased())   //abcde

//8、从下表1到3的位置截取字符串
var temp = str2.substring(from: 1) as NSString
let newStr = temp.substring(to: 2) as NSString
print(newStr)   //23

//9、字符串查找
var range = str2.range(of: "23")
if range.location == NSNotFound {
    //没有查找到字符串
} else {
    print("字符串的位置为:\(range.location), 长度为:\(range.length)")
    //字符串的位置为:1, 长度为:2
}

可变字符串基本用法

var str1: NSString = "Objective-C"
var str2: NSString
var replace: NSString
var mStr: NSMutableString
var range: NSRange

//1、从不可变字符串创建可变字符串
mStr = NSMutableString(string: str1)

//2、插入字符串
mStr.insert("java", at: mStr.length)
print(mStr)

//3、拼接字符串
mStr.append("C")
print(mStr)

//4、删除字符串
mStr.deleteCharacters(in: NSMakeRange(11, 5))
print(mStr)

//5、查找范围
range = mStr.range(of: "Obj")
print(range)

//6、替换字符串
mStr.replaceCharacters(in: NSMakeRange(1, 2), with: "sun")
print(mStr)

数组

数组与swift类型转换

var str = "a b c d"
var arr = str.components(separatedBy: " ")

//将原生数组转化为NSArray
let foundaryArr = arr as NSArray

//将NSAarray转换为swift类型数组
let swiftArr = foundaryArr as [AnyObject]

字典

字典与swift类型转换

var str1 = "a b c d"
var str2 = "1 2 3 4"

let keys = str1.components(separatedBy: " ")
let values = str2.components(separatedBy: " ")

let foundationDic = NSDictionary(objects: values, forKeys: keys as [NSCopying])

//将NSDictionary转换为swift原生数据类型 [NSObject: AnyObject]
let swiftDic = foundationDic as [NSObject: AnyObject]
print(swiftDic.description)

//将原生数据类型转化为NSDictionary
let dic = swiftDic as NSDictionary

NSSet

NSSet与swift类型转换

var nsset: NSSet = ["1", "2"]

//将NSSet 转化为 set
var swiftSet = nsset as Set<NSObject>
//将set转换为NSSet
var set = swiftSet as NSSet
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,386评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,939评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,851评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,953评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,971评论 5 369
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,784评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,126评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,765评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,148评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,744评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,858评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,479评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,080评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,053评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,278评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,245评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,590评论 2 343

推荐阅读更多精彩内容