2015-12-15 32 views
6

Tôi đang cố gắng chuyển một số ứng dụng cơ bản từ OS X sang Linux nhưng có vẻ như ngay cả những thứ cơ bản còn thiếu trên nền tảng Linux. Có một số tài liệu những gì còn thiếu? Đây là ví dụ:Sự khác biệt giữa Swift 2 và Linux/OS X

exmcast.swift:7:20: error: value of type 'String' has no member 'stringByReplacingOccurrencesOfString' 
let name: String = address.stringByReplacingOccurrencesOfString(".", withString: "_") 

Mã đơn giản này hoạt động trên OS X. Trên Linux - bạn thấy kết quả. Rất khó để chuyển bất cứ thứ gì khi không có thông tin cơ bản về những gì còn thiếu. Và có vẻ như ngay cả nội dung cơ bản là mất tích ..

Trả lời

5

Swift 3 sẽ được phát hành vào mùa thu năm 2016.

Swift vừa mở nguồn và cổng Linux work in progress:

Cảng vẫn là một công việc đang tiến triển nhưng chúng tôi rất vui khi nói rằng hôm nay nó có thể sử dụng được để thử nghiệm.

Bạn có thể truy cập Swift.orggithub.com/apple và tận hưởng tác phẩm tuyệt vời.

Khi bạn tìm thấy thứ chưa được triển khai, bạn có thể gửi lỗi và/hoặc trợ giúp triển khai tính năng này.

Phiên bản mới của open source Swift sẽ được đăng thường xuyên trên Swift.org.

3

Phương pháp bạn đang cố gọi thực sự là một phần của NSString. Chuỗi được bắc cầu đằng sau hậu trường cho NSString và đó là lý do tại sao bạn có thể sử dụng phương thức đó trên OS X. NSString là một phần của khuôn khổ Foundation và Foundation không hoàn toàn được triển khai cho Linux. Bạn có thể kiểm tra trạng thái của các phần khác nhau của Foundation tại đây: Foundation Status. NSString hiện chỉ được triển khai một phần.

+0

Tôi không biết về tệp trạng thái này. Tuyệt vời, cảm ơn! – Moritz

+0

Không sao cả! Vì vậy, nhiều tính năng Swift mới, thật khó để theo dõi tất cả chúng. –

+0

Cảm ơn. Vì vậy, kiên nhẫn là bắt buộc :) Vấn đề được giải quyết. – MrSpock

0

Ngày OSX bạn vẫn cần phải nhập khẩu Foundation

Bạn có thể tự do sử dụng giải pháp Swift tinh khiết, trong trường hợp của bạn

let str = "alfa.beta" 
// (1) 
    let str1 = str.characters.map { 
     $0 == "." ? "_": $0 
    }.reduce("") { (str, c) -> String in 
     str + String(c) 
    } 
// (2) 
    let str2 = String(str.characters.split(".").joinWithSeparator(["_"])) 
    print(str,str1,str2) // alfa.beta alfa_beta alfa_beta 

cho một cái gì đó cao cấp hơn, bạn có chức năng mạnh mẽ

mutating func replaceRange<C : CollectionType where C.Generator.Element == Character>(subRange: Range<Index>, with newElements: C) 

hoặc

mutating func replaceRange(subRange: Range<Index>, with newElements: String) 
Các vấn đề liên quan