精华内容
下载资源
问答
  • swift文件读取

    2020-04-02 17:13:20
    iOS系统只允许特定文件夹下的文件可以新增、修改、删除。当用户下载并安装了App后,系统会为该App创建专属的主目录(Home Directory),并会自动创建三个目录,功能如下: 1、Documents:存储用户自行创建的文件数据...

    iOS系统只允许特定文件夹下的文件可以新增、修改、删除。当用户下载并安装了App后,系统会为该App创建专属的主目录(Home Directory),并会自动创建三个目录,功能如下:
    1、Documents:存储用户自行创建的文件数据,比如执行时创建的数据(图片、文档)、数据库,都存在此目录下。
    2、tmp:存储暂时性文件,例如执行应用程序是,经常要创建一些中间文件,这些文件就放在此目录。
    3、Library/Caches:存储缓存文件,最长存储的是浏览网页时所下载的文件,下次浏览时可加快速度。
    tmp和Library/Caches都是春初暂时性文件,不同之处在于当设备存储空间不足时,iOS会主动清除Libary/Caches的数据以释放存储空间,而tmp目录中的数据必须有开发者自行删除。

    读取项目中的图片文件
    语法:imageTset.image=UIImage(named:“图片名称”)

    读取项目中其他类型的文件
    1、首先要获取文件的路径
    var pathStr:NSString=Bundle.main.path(forResource: “titleName”, ofType: “txt”)! as NSString
    2、接着用NSData来读取数据
    var titleData:NSData?=NSData(contentsOfFile: pathStr as String)
    3、NSData获取的数据是二进制数据,需要用NSString转换为字符串
    var titleString:NSString=NSString(data: titleData as! Data, encoding: String.Encoding.utf8.rawValue)!

    项目动态文件
    程序中动态管理文件大多是通过FileManager对象来实现
    1、创建文件或目录
    var fileManager:FileManager=FileManager()
    2、获取App的主目录Documents文件夹的路径:NSHomeDirectory()函数会返回主目录的路径,只要在其后面加上“/Documents/”字符串即可。
    var filePath:String=NSHomeDirectory()+"/Documents/"
    3、新增文件,使用createFileAtPath方法
    语法:NSFileManager 对象.createFile(atPath:文件路径,contents:文件内容,attributes:文件属性)
    文件路径:新增文件的完整路径
    文件内容:新增文件同事加入的内容,数据类型为NSData。
    文件属性:设置读写等属性。
    如果文件内容和属性都设置为“nil”,则新增一个可擦鞋的空文件。
    新增文件时,如果新增路径已存在相同名称的文件,则原有文件会被新文件取代,原有文件的内容会取消。
    var fileName:String=filePath+“text1.txt”
    fileManager.createFile(atPath: fileName, contents: titleData as Data?, attributes: nil)
    4、新增目录,使用ceateDirectoryAtPath方法
    语法:NSFileManager 对象.createDirectory(atPath:目录路径,withIntermediateDirectories:布尔值,attributes:文件属性,error:错误处理)
    var dirName=filePath+“text”
    do {
    try fileManager.createDirectory(atPath: dirName, withIntermediateDirectories: true, attributes: nil)
    print(“文件夹创建成功”)
    } catch let error {
    print(error.localizedDescription)
    print(“文件夹创建失败”)
    }
    参数withIntermediateDirectories是布尔值,其值为true时,会自动创建不存在的中间目录;其值为false时,只要创建目录过程中有不存在的目录路径或要新增的目录已经存在,就会停止创建并返回创建失败。例如要创建的目录路径为“dir/root/test1”,中间的root目录不存在,若设置“withIntermediateDirectories:true”就会先创建root目录再创建test1目录;若设置“withIntermediateDirectories:false”就返回创建失败。

    检查文件是否存在、读写文本文件
    检查文件存在
    语法:NSFileManager 对象.fileExists(atPath:文件路径)
    fileManager.fileExists(atPath: fileName)
    检查路径是否存在,把文件名换成路径

    读写
    swift读取和写入文本文件的方式非常简单,甚至不必要使用NSFileManager对象,而是使用NSString的构造函数或方法即可。
    读取
    语法:返回值=NSString(contentsOfFile:文件路径,encoding:编码方式,error:错误处理)
    编码方式,设置返回值的编码类型,通常使用“utf8”,返回类型是NSString
    do{
    var readStr:NSString?=try NSString(contentsOfFile: fileName, encoding: String.Encoding.utf8.rawValue)
    }catch let error {
    print(error.localizedDescription)
    print(“文件夹创建失败”)
    }

    写入
    语法:字符串变量.writeToFile(文件路径,atomically:布尔值,encoding:编码方式,error:错误处理)
    atomically参数值为true,系统会先将数据写入一个辅助文件,再讲辅助文件更名为制定文件;参数若为false,系统会直接将数据写入制定文件。
    do{
    try filePath.write(toFile: fileName, atomically: false, encoding: String.Encoding(rawValue: String.Encoding.utf8.rawValue))
    }catch let error {
    print(error.localizedDescription)
    print(“文件夹创建失败”)
    }

    文件列表
    列出制定目录下所有文件和目录也是常用的功能,利用NSFileManager对象的subpathsAtPath方法可获取制定目录下所有文件和目录的名称,文件和目录名称时存放于数组中返回的,只要使用for训话即可将其列出。

    获取制定目录下所有文件和目录名称
    语法:数组名.NSFileManager 对象.subpaths(atPath:目录路径)
    var fileArray:Array?=fileManager.subpaths(atPath: fileName)

    管理文件 和目录:复制、移动、删除
    复制文件的指令与复制目录相同,如果传入的参数是文件路径,就复制文件;传入的是目录路径,就复制目录。移动、删除文件或目录其功能也一样,操作对象视传入的参数而定。

    复制
    语法:FileManager 对象.copyItem(atPath:原始路径,目标路径,error:错误处理)
    do
    {
    try fileManager.copyItem(atPath: fileName, toPath: fileName)
    }
    catch let error {
    print(error.localizedDescription)
    print(“文件夹创建失败”)
    }

    移动文件
    语法:FileManager 对象.moveItem(atPath:原始路径,目标路径,error:错误处理)
    do
    {
    try fileManager.moveItem(atPath: fileName, toPath: fileName)
    }
    catch let error {
    print(error.localizedDescription)
    print(“文件夹创建失败”)
    }

    删除文件
    语法:FileManager 对象.removeItem(atPath:文件路径,error:错误处理)
    do
    {
    try fileManager.removeItem(atPath: fileName)
    }
    catch let error {
    print(error.localizedDescription)
    print(“文件夹创建失败”)
    }

    展开全文
  • Swift 文件读取 和 写入

    千次阅读 2018-01-31 09:24:45
    Swift 文件读取 和 写入1 文件的读取

    Swift 文件读取 和 写入

    1 文件的读取

    //加载本地字txt资源
    let path = Bundle.main.path(forResource:"mapStr", ofType:"txt")
    let text = try! String(contentsOfFile:path!, encoding: String.Encoding.utf8)
    

    2 文件的写入

    let msg = "需要写入的资源"
    let fileName = "学习笔记.text"
    
    let fileManager = FileManager.default
    let file = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, FileManager.SearchPathDomainMask.userDomainMask, true).first
    let path = file! + fileName
    
    fileManager.createFile(atPath: path, contents:nil, attributes:nil)
    
    let handle = FileHandle(forWritingAtPath:path)
    handle?.write(msg.data(using: String.Encoding.utf8)!)
    

    更新ing。。。

    展开全文
  • swift-csv 用 Swift 解析和读取 CSV 文件 
  • 您可以通过在Package.swift文件中添加正确的描述来使用来安装SwiftyNifti : // swift-tools-version:4.0 import PackageDescription let package = Package ( name : " YOUR_PROJECT_NAME " , dependencies : [ ...
  • Swift - 读取/解析本地文件

    千次阅读 2017-09-18 14:54:02
    先把读取swift代码贴出来,和oc类似,只不过NSBundle变成了Bundle:swift 4.0 let jsonPath = Bundle.main.path(forResource: "resultdata", ofType: "json") let data = NSData.init(contentsOfFile: jsonPath!)...

    先把读取的swift代码贴出来,和oc类似,只不过NSBundle变成了Bundle:

    swift 4.0
    let jsonPath = Bundle.main.path(forResource: "resultdata", ofType: "json")
    let data = NSData.init(contentsOfFile: jsonPath!)

    接下来是对json数据进行解析,给出个json的样本:

    {
        "status": 0,
        "msg": "ok",
        "data": {
            "tags": [
                {
                    "id": "0",
                    "title": "全部",
                },
                {
                    "id": "photo",
                    "title": "快看我",
                }
            ],
            "comments": [
                {
                    "content": "不错",
                    "praise": "0",
                    "date": "2017-08-25",
                }
            ]
        }
    }
    

    这里,这里,开始解析:

    let jsonDic:NSDictionary = try! JSONSerialization.jsonObject(with: data! as Data, options: JSONSerialization.ReadingOptions.mutableContainers) as! NSDictionary
    let jsonDicData:NSDictionary = jsonDic.object(forKey: "data") as! NSDictionary
    let array:NSArray = jsonDicData.object(forKey: "comments") as! NSArray;

    读取,解析,结束。
    然而有时候卡到第一步了,怎么回事?json文件,明明自己拉进项目了,为什么获取到的path为nil呢 ?
    方式不对,正确的step如下 — >

    bundle

    注意:json文件是添加到Copy Bundle Resources里面,不是Compile Sources里边。

    点加号,把json文件添加进去就好了,问题解决,数据拿到。

    有问题请邮件:584379066@qq.com , 请备注

    展开全文
  • SwiftUI 读取CSV文件并显示,支持载入不同数据 本文价值与收获 看完本文后,您将能够作出下面的界面 看完本文您将掌握的技能 读取CSV文件 解析CSV文件 通过List组件显示CSV文件 基础知识 ObservableObject 具有...

    实战需求

    SwiftUI 读取CSV文件并显示,支持载入不同数据

    本文价值与收获

    看完本文后,您将能够作出下面的界面

    SwiftUI 读取CSV文件

    SwiftUI 读取CSV文件

    看完本文您将掌握的技能

    • 读取CSV文件
    • 解析CSV文件
    • 通过List组件显示CSV文件

    基础知识

    ObservableObject

    具有发布者的一种对象,该对象在更改对象之前发出。

    protocol ObservableObject : AnyObject
    

    总览
    默认情况下,合成器将在其任何属性更改之前发出更改后的值的发布程序。

    
    class Contact: ObservableObject {
        @Published var name: String
        @Published var age: Int
    
        init(name: String, age: Int) {
            self.name = name
            self.age = age
        }
    
        func haveBirthday() -> Int {
            age += 1
            return age
        }
    }
    
    let john = Contact(name: "John Appleseed", age: 24)
    cancellable = john.objectWillChange
        .sink { _ in
            print("\(john.age) will change")
    }
    print(john.haveBirthday())
    // Prints "24 will change"
    // Prints "25"
    

    主题

    发布变更

    1、var objectWillChange: Self.ObjectWillChangePublisher

    在对象更改之前发出的发布者。
    需要。 提供了默认实现。

    2、associatedtype ObjectWillChangePublisher : Publisher = ObservableObjectPublisher

    在对象更改之前发出的发布者的类型。
    需要。


    实战代码

    1、数据文件
    (1)wine.csv

    1,14.23,1.71,2.43,15.6,127,2.8,3.06,.28,2.29,5.64,1.04,3.92,1065
    1,13.2,1.78,2.14,11.2,100,2.65,2.76,.26,1.28,4.38,1.05,3.4,1050
    1,13.16,2.36,2.67,18.6,101,2.8,3.24,.3,2.81,5.68,1.03,3.17,1185
    1,14.37,1.95,2.5,16.8,113,3.85,3.49,.24,2.18,7.8,.86,3.45,1480
    1,13.24,2.59,2.87,21,118,2.8,2.69,.39,1.82,4.32,1.04,2.93,735
    1,14.2,1.76,2.45,15.2,112,3.27,3.39,.34,1.97,6.75,1.05,2.85,1450
    1,14.39,1.87,2.45,14.6,96,2.5,2.52,.3,1.98,5.25,1.02,3.58,1290
    

    (2) iris.csv

     5.1,3.5,1.4,0.2,Iris-setosa
    4.9,3.0,1.4,0.2,Iris-setosa
    4.7,3.2,1.3,0.2,Iris-setosa
    4.6,3.1,1.5,0.2,Iris-setosa
    5.0,3.6,1.4,0.2,Iris-setosa
    5.4,3.9,1.7,0.4,Iris-setosa
    4.6,3.4,1.4,0.3,Iris-setosa
    5.0,3.4,1.5,0.2,Iris-setosa
    4.4,2.9,1.4,0.2,Iris-setosa
    4.9,3.1,1.5,0.1,Iris-setosa
    

    2、代码

    import SwiftUI
    
    class CSVModel:ObservableObject{
        @Published var items:[[String]] = []
        func load(fname:String){
          
            self.items = parse2CSV(fname: fname)
        }
    }
    
    struct ContentView: View {
        @ObservedObject var model = CSVModel()
        var body: some View {
            VStack{
                HStack{
                Button("载入白酒CSV"){
                    self.model.load(fname: "wine")
                    print("\(self.model.items.description)")
                }.padding()
                    Button("载入花朵CSV"){
                        self.model.load(fname: "iris")
                        print("\(self.model.items.description)")
                    }.padding()
                }
                List{
                    ForEach(self.model.items,id:\.self){ item in
                        Text("\(item.description)")
                    }
                    
                }
            }
        }
    }
    
    
    struct ContentView_Previews: PreviewProvider {
        static var previews: some View {
            ContentView()
        }
    }
    
    
    func parse2CSV(fname:String) ->  [[String]] {
        let urlpath = Bundle.main.path(forResource: fname, ofType: "csv")
        let url = URL(fileURLWithPath: urlpath!)
        let csv = try! String.init(contentsOf: url)
        let lines = csv.components(separatedBy: "\n")
        var wineParameters: [[String]] = [[String]]()
        
    
        //let shuffledLines = lines.shuffled()
        for line in lines {
            if line == "" { continue } // skip blank lines
            let items = line.components(separatedBy: ",")
            //let parameters = items.map{ Double($0)! }
            wineParameters.append(items)
           
        }
       
        return wineParameters
    }
    

    技术交流

    QQ:3365059189
    SwiftUI技术交流QQ群:518696470

    展开全文
  • swift读取txt文件报错

    2016-07-27 01:21:15
    (https://img-ask.csdn.net/upload/201607/27/1469582323_834821.png) 本人是swift新手 想要读取一个txt文件的内容 参考了别人的写的 但是会报这样的错误 希望好心人帮忙指点一下 万分感激
  • varstr:NSString=NSString.stringWithContentsOfFile(_srcouceFilePath,encoding:NSUTF8StringEncoding,error:nil)读取中文时首先要取得中文编码varencode:NSStringEncoding=...
  • Swift之从xls文件读取数据

    千次阅读 2015-12-27 13:42:36
    研究了半天,并没有研究出来如何在swift读取xls格式的数据,故只能复制粘贴到txt文档中。 数据源如下 它横排由/t分割,竖行之间由/r分割,最后实现如下,详情见注释 func readfile() -> ([Double],...
  • 只要是app开发者都知道,从服务器端获得的数据要不就是json格式的数据,要么就是xml格式的数据,而这篇文章主要给大家介绍了关于iOS Swift读取本地json文件报错的解决方法,需要的朋友可以参考借鉴,下面来一起学习...
  • 哈喽,大家好 最近闲着无聊,学下Swift 以后会把一些知识点.../** WKWebView 的简单使用,读取本地html文件 */ let webView = WKWebView(frame: CGRect(x: 0, y: -20, width: self.view.frame.size.width, height: ...
  • 主要介绍了Swift读取App的版本信息与PCH文件的相关资料,文中通过图文介绍的非常详细,对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。
  • 实现plist文件 首先得先创建plist文件 在这里插入图片描述 创建方法 然后根据我们给出的题干设计plist文件 plist文件 之后我们需要把这个plist传到表格上,我采用的是直接放在表格上数据,如果有大神可以教教我...
  • swift 下载图片并读取显示。 ···· override func viewDidLoad() { super.viewDidLoad() var request = HTTPTask() let downloadTask = request.download('http://www.test.c...
  • plist内容如图 ...viewController.swift class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate { var cells : NSDictionary? // Global Variable override fu
  • swift支持方法的重载 方法的重载:方法名称相同,但是参数不同。包括: 参数的类型不同 参数的个数不同 override func viewDidLoad() { super.viewDidLoad() // 1.获取json文件路径 guard let jsonPath = ...
  • ZIP Foundation 一个用于创建,读取和修改ZIP存档文件Swift
  • //在顶部状态栏显示风火轮(iPhonex之后没有好像)  UIApplication.shared.isNetworkActivityIndicatorVisible = true ...// 读取info.plist中的信息  let mainBundle = Bundle.main  let identifer = mainB...
  • Swift 读取本地json文件时的异常捕获(try catch)的使用 // 1.获取文件路径 let path = NSBundle.mainBundle().pathForResource("xxx.json", ofType: nil)! // 2.根据文件创建 let data = NSData(contentsOfFile...
  • swift 加载本地文件 背景:有天想通过Xcode的playground读取本地化的日志文件, 便于做格式化的分析 1. 读取方法 通过在工程里面获得并读取文件: let fileManager = FileManager.default let path = "/Users/...
  • swift读取本地数据元 *.plist 文件

    千次阅读 2015-02-25 22:07:20
    var listData: NSDictionary = NSDictionary() var filePath = NSBundle.mainBundle().pathForResource("data.plist", ofType:nil ) listData = NSDictionary(contentsOfFile: filePath!)!
  • Swift - .plist文件数据的读取和存储

    千次阅读 2016-08-11 16:00:54
    Swift - .plist文件数据的读取和存储 2015-09-28 09:37发布:hangge 每次在Xcode中新建一个iOS项目后,都会自己产生一个.plist文件,里面记录项目的一些配置信息。我们也可以自己创建.plist文件来进行...
  • csvcore:用于读取和写入CSV文件的本机Swift
  • 本文介绍Swift2.2 中, 创建文件/文件夹, 将NSObject对象存档到文件, 并从存档文件读取对象.1:可存档对象声明//必须要继承NSObject对象,并且实现NSCoding协议 class DataBean: NSObject, NSCoding { var image: ...

空空如也

空空如也

1 2 3 4 5 ... 13
收藏数 254
精华内容 101
关键字:

swift文件读取