2 x xx xxx xxxx x_xx_xxx_xxxx 于 2016.03.29 15:32 提问

IOS swift 如何获取剩余内存大小

小弟最近遇到一个问题,如何用swift获取苹果手机剩余可用的内存大小,在网上并没有找到swift的例子,求各位大神指点一下!

5个回答

u013346305
u013346305   2016.03.29 16:35
已采纳

跟oc的差不多,稍微改改就是。

x_xx_xxx_xxxx
x_xx_xxx_xxxx 后来改一改,就实现了!谢啦!
一年多之前 回复
hi_chen_xingwang
hi_chen_xingwang   Rxr 2016.03.29 18:51
x_xx_xxx_xxxx
x_xx_xxx_xxxx 嗯嗯,后来我根据OC的代码,改了改,就好用了,3Q
一年多之前 回复
x_xx_xxx_xxxx
x_xx_xxx_xxxx 嗯嗯,后来我根据OC的代码,改了改,就好用了,3Q
一年多之前 回复
x_xx_xxx_xxxx
x_xx_xxx_xxxx   2016.03.30 09:55

首先分享第一个方案:
一: 调用OC的方法
1.http://blog.csdn.net/lwjok2007/article/details/48089241
这个链接下详细解决了swift如何调用OC的问题。

swiftTogetherWithOC-Bridging-Header.h (桥接文件中)
//
// Use this file to import your target's public headers that you would like to expose to Swift.
//

#import "OS.h"

oc的头文件 OS.h 中代码如下
//
// OS.h
// swiftTogetherWithOC
//
// Created by winner on 16/3/29.
// Copyright © 2016年 winner. All rights reserved.
//

#import

@interface OS : NSObject
-(void)TestOCStr;
@end
#import

oc的 .m 文件中 代码如下:

//
// OS.m
// swiftTogetherWithOC
//
// Created by winner on 16/3/29.
// Copyright © 2016年 winner. All rights reserved.
//

#import "OS.h"

@implementation OS

-(void)TestOCStr
{
NSLog(@"这个是OC方法");
NSDictionary *systemAttributes = [[NSFileManager defaultManager]fileSystemAttributesAtPath:NSHomeDirectory()];
NSString *diskTotalSize = [systemAttributes objectForKey:@"NSFileSystemSize"];
NSLog(@"磁盘大小:%@ B", diskTotalSize);
NSLog(@"磁盘大小:%.2f GB", [diskTotalSize floatValue]/1024/1024/1024);
NSString *diskFreeSize = [systemAttributes objectForKey:@"NSFileSystemFreeSize"];
NSLog(@"可用空间:%@ B", diskFreeSize);
NSLog(@"可用空间:%.2f GB", [diskFreeSize floatValue]/1024/1024/1024);
// NSLog(systemAttributes);
}

@end

swift 文件中 代码如下:

//
// ViewController.swift
// swiftTogetherWithOC
//
// Created by winner on 16/3/29.
// Copyright © 2016年 winner. All rights reserved.
//

import UIKit

class ViewController: UIViewController {

override func viewDidLoad() {
    super.viewDidLoad()
    var os = OS()
    os.TestOCStr()
    // Do any additional setup after loading the view, typically from a nib.
}


override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

}

最后,运行结果如下:

2016-03-30 09:41:59.249 swiftTogetherWithOC[987:152037] 这个是OC方法
2016-03-30 09:41:59.249 swiftTogetherWithOC[987:152037] 磁盘大小:999345127424 B
2016-03-30 09:41:59.250 swiftTogetherWithOC[987:152037] 磁盘大小:930.71 GB
2016-03-30 09:41:59.250 swiftTogetherWithOC[987:152037] 可用空间:883457773568 B
2016-03-30 09:41:59.250 swiftTogetherWithOC[987:152037] 可用空间:822.78 GB

二:分享第二个方案,就是和一楼层主说的一样了,看到这样的代码,突然有点熟悉,后来改一改,直接就成 swift 直接版 的了,以下是我写的 swift的代码:

override func viewDidLoad() {
    super.viewDidLoad()


    let manager = NSFileManager.defaultManager()
    do
    {
                    //沙盒根路径
                    let home = NSHomeDirectory() as NSString
        let attribute = try manager.attributesOfFileSystemForPath(home as String) 
        freesize = attribute[NSFileSystemFreeSize]!as! Float
        print("here is freesize : \(freesize)")
        freeSize.text = String(format: "%.1f",freesize/1024/1024/1024) + "GB"
    }catch{}
    time.text = String(format: "%.0f",freesize/1024/1024/36) + " min"
    let defaults = NSUserDefaults.standardUserDefaults()
    userName.text = "业务员姓名:" + defaults.stringForKey("userName")!

 }

    运行结果:

    here is freesize : 8.83465e+11

    最后成功在手机端显示了手机的剩余内存,不过,由于自己的电脑原因,并不能上传图片,请谅解。
x_xx_xxx_xxxx
x_xx_xxx_xxxx   2016.03.29 21:38

我后来解决了这个问题,明天我把具体代码贴出来!

x_xx_xxx_xxxx
x_xx_xxx_xxxx   2016.03.29 21:41

我后来解决了这个问题,明天我把具体代码贴出来!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!