2014-11-01 27 views

回答

2

要回答關於閱讀文件的問題,您需要使用NSFileManager。 Swift沒有自己的文件API。另外,你不能簡單地打開文件;您需要使用文件處理程序,因爲/dev/random將永遠持續輸出。

下面是一個例子:

let manager = NSFileManager.defaultManager() 
let randomPath = "/dev/random" 

if manager.fileExistsAtPath(randomPath) { 
    let handle = NSFileHandle(forReadingAtPath: randomPath) 

    if let validHandle = handle { 
     let desiredLength = 256 

     // Warning: Instead of returning NSData?, this method throws an exception if there's an error. Consider adding additional error handling. 
     let fileData = validHandle.readDataOfLength(desiredLength) 
     let fileString = NSString(data: fileData, encoding: NSASCIIStringEncoding) 
     if (fileString != nil) { 
      println(fileString!) 
     } 
    } 
} 

例控制檯輸出:

¬Ñ@ < 4R-ÐÛÍäÓ - (*Âý3o÷ - »E2 @ AAX <øWýsñniâõãQüÕ£ÆsûÄÏþDÊU²OÑ9H)úûÓWhAóûoκfßpÍC% M¤ò«ÿ@' - gVüü]®%亞青{»J>時ä©æ¨Zì¿¿Bþxû,«1'-£¾E¸Ju|`ëérßNeòWÙé-I#ê05¿ JF-EE«I =¤< 5ë/pü¾üæü5è«ãå.öŪ¿¯¨ôø+EeÅþUå5ì%ÿ¼pÕÊ:oÐ

也就是說,如果你的目的是加載在陣列中的隨機數,你應該只使用arc4random_uniform(),它會返回一個均勻分佈的隨機數:

var randomNumbers = [Int]() 

for i in 1...10 { 
    randomNumbers.append(Int(arc4random_uniform(1000))) 
} 

println(randomNumbers) 

輸出示例:

[27,796,150,439,955,678,556,816,571,130]

+0

謝謝!我在遊樂場工作,我得到了你所得到的。 – 2014-11-01 22:12:31

+0

@Amanda_Panda太棒了!很高興聽到。 – 2014-11-01 22:13:20

1

Just fo r爲了完整:您可以在C中使用與Swift中的open/read/write/close幾乎相同的方法:

var array = [UInt8](count: 10, repeatedValue: 0) 

let fd = open("/dev/random", O_RDONLY) 
if fd != -1 { 
    read(fd, &array, UInt(sizeofValue(array) * array.count)) 
    close(fd) 
    println(array) 
}