Swift Xcode Index đóng băng hoặc chậm


101

Có lẽ đây chỉ là tôi gặp phải một "tính năng" khó chịu như vậy:

Sau khi nâng cấp từ Xcode 6.0.1 lên Xcode 6.1, mọi thứ đã thay đổi. Xcode 6.1 vĩnh viễn lập chỉ mục dự án hoặc biên dịch các tệp nguồn. Dự án không phải là một dự án lớn. Nó chỉ chứa một loạt các tệp Swift và AWS SDK 2.0 Cocoapods trong không gian làm việc. Tôi không nghĩ rằng nó sẽ ngăn toàn bộ lập chỉ mục và biên dịch trơn tru. Tôi đã thử với một số mẫu aws-sdk-ios, chỉ để xem Xcode 6.1 hoạt động như thế nào trên chúng và cuối cùng nó vẫn phải chờ đợi mãi mãi.

Những giải pháp tôi đã thử cho đến nay:

  1. Xóa "Dữ liệu có nguồn gốc" trong Trình tổ chức và mở lại và không gian làm việc. (không sửa được)
  2. "Hiển thị Nội dung Gói" trên tệp .xcodeproj và xóa .xcworkspace như trong ( Xcode 4 - hiệu suất chậm )

Thật không may, không ai trong số họ làm việc.

Tái bút có lẽ tôi nên thử tạo lại dự án? Cài đặt máy tính của tôi: MacBook Pro (Retina, 13-inch, giữa năm 2014), Bộ nhớ 8 GB 1600 MHz DDR3, với Yosemite. (Tôi nghĩ điều này là đủ để chạy dự án nhỏ này.)



2
Tôi sẽ không giúp được gì nhiều nhưng những gì tôi làm là ... Tôi chỉ để xcode 6.x mất thời gian. Nếu tôi chiến đấu với nó, nó sẽ làm hỏng tôi trong thời gian dài nên tôi chỉ cần đợi cho đến khi xcode 6 bắt đầu. Tôi để nó chạy nó lập chỉ mục ngu ngốc. Sau đó, tôi khởi động trình mô phỏng iOS riêng biệt và đợi cho đến khi bàn đạp ngu ngốc của nó xuất hiện. Cuối cùng khi tôi chạy một dự án, tôi bỏ qua thực tế là nhiều lần Lập chỉ mục nói "Tạm dừng" và tôi cầu nguyện với <# godObject #>, uống cà phê và cố gắng vào chế độ thiền. Nhưng * thở dài *, thật khó khăn: / ​​và tôi thực sự thích xcode 5.1.1: |
staticVoidMan

Câu trả lời này phù hợp với tôi: stackoverflow.com/a/33395844/242933
ma11hew28

Câu trả lời:


72

Tôi đã thử nhiều đề xuất ở trên bao gồm tách tệp, cài đặt Xcode 6.2 beta và phá vỡ các câu lệnh nối chuỗi. Điều cuối cùng đã làm cho tôi là tách một mảng khai báo theo nghĩa đen của từ điển mà tôi đang sử dụng cho dữ liệu thử nghiệm thành nhiều .appendcâu lệnh.

// This causes indexing/building to hang...
var test = [ [ "a": false, "b": "c" ],
             [ "a": false, "b": "c" ],
             [ "a": false, "b": "c" ],
             [ "a": false, "b": "c" ],
             [ "a": false, "b": "c" ],
             [ "a": false, "b": "c" ] ]

// This works fine.
var test = [ [ "a": false, "b": "c" ] ]
test.append([ "a": false, "b": "c" ])
test.append([ "a": false, "b": "c" ])
test.append([ "a": false, "b": "c" ])
test.append([ "a": false, "b": "c" ])
test.append([ "a": false, "b": "c" ])

Ngoài ra, đối với những gì nó đáng giá, mục nhập thứ 6 trong mảng này là nguyên nhân gây ra sự cố cho tôi; năm hoạt động tốt.


Giải pháp tương tự đã làm việc cho tôi với từ điển. Khởi tạo nó trực tiếp gây ra lập chỉ mục chạy mãi mãi. Khởi tạo nó init()từng bước một hoạt động hoàn hảo. Đáng nói là tôi đã phải xóa .xcworkspacetập tin.
jboi

Đã sửa nó cho tôi mà không có từ điển nào liên quan. Chỉ là một mảng các bộ giá trị với 8 phần tử trong khai báo. Phải hoàn nguyên để bổ sung với 11 phần tử. Không bận tâm đến việc tìm ra điểm phá vỡ chính xác nhưng xây dựng nhanh hơn 10 lần. Phiên bản Xcode 6.1.1 (6A2008a) trên Mavericks.
Josh

Tôi cũng nhấn mạnh vấn đề với chính xác 6 yếu tố. 5 là tốt.
Justin Lau

Đây là sự cố XCode hay sự cố trình biên dịch?
Sljux

4
Tôi đã trải nghiệm điều này trong Xcode 7.3 với một mảng gồm 229 mục. Thay vì chia nhỏ nó, tôi đã thêm một khai báo kiểu thay vì để Swift suy luận kiểu. Sau khi tôi làm điều đó, nó đã hoạt động.
Brigham

34

Giải pháp làm việc duy nhất cho tôi là xóa tất cả dữ liệu có nguồn gốc (không chỉ cho dự án hiện tại, chỉ cần dọn sạch toàn bộ thư mục) và sau đó khởi động lại Xcode.

  1. Mở Tệp / Tùy chọn trong Xcode

  2. Nhấp vào Vị trí ở ngoài cùng bên phải của cửa sổ bật lên

  3. Nhấp vào biểu tượng mũi tên nhỏ bên cạnh "/Users/Mac/Library/Developer/Xcode/DerivedData" ... nó sẽ đưa bạn đến thư mục Xcode có chứa thư mục DerivedData (chứa tất cả dữ liệu bắt nguồn từ các dự án trước của bạn .)

  4. XÓA thư mục DerivedData


1
@TravisM. Bạn đã làm theo các bước? Nếu bạn vào Window, Organizer, Projects, Delete Derived Data, nó sẽ không hoạt động. Bạn cần phải đi qua Preferences.
ericgu

@ericgu Vâng, nhưng nó không hoạt động. Tuy nhiên, tôi đã khắc phục được sự cố của mình, nó liên quan đến việc tôi khởi tạo một từ điển với dữ liệu được mã hóa cứng trong một lần. Khi tôi di chuyển mã để thêm dữ liệu mã cứng từng hàng một, các vấn đề đóng băng / chậm đã biến mất ngay lập tức.
Travis M.

Thư mục tại ~ / Library / Developer / Xcode / DerivedData / trên máy của tôi. Bạn cũng có thể tìm thấy nó bằng cách đi tới Window> Projects trong Xcode.
Suragch

Cảm ơn. Điều này có ích. Sự cố "lập chỉ mục mãi mãi" bắt đầu ngay sau khi tôi cập nhật phiên bản cacaoPod của mình và thực hiện cài đặt pod.
WKL

11

Bạn đang sử dụng CocoaPods? Tôi đã gặp vấn đề tương tự sớm hơn ngày hôm nay. (Sử dụng xCode 6.1.1)

Để khắc phục sự cố, tôi đã xóa mọi thứ trong đó ~/Library/Developer/Xcode/DerivedData, Podsthư mục trong thư mục dự án của tôi và <project>.xcworkspace.

Sau đó, tôi mở terminal, điều hướng đến thư mục dự án của mình và chạy pod installlại.


1
Vâng tôi đồng ý. Hiện tại, Xcode đang hoạt động tốt. Nhưng thỉnh thoảng nó vẫn bị lỗi sập nguồn. Giải pháp của tôi là xóa thư mục dữ liệu dẫn xuất.
leonard

Rất vui khi thấy điều này cũng hiệu quả với người khác :). Có vẻ như xCode đang cố gắng lập chỉ mục Thư viện CocoaPod và bị mắc kẹt ở đâu đó.
Michael Schinis

1
Xóa thư mục Pods và tệp <project> .xcworkspace, sau đó chạy cài đặt pod lại hoạt động.
KML

9

Có cùng một vấn đề ngày hôm nay. Xcode 6.3.2, dự án Swift cỡ trung bình. Tại một thời điểm, nó bắt đầu lập chỉ mục và nó sẽ không bao giờ kết thúc việc lập chỉ mục. Mã gây ra điều này là một từ điển kiểu [String: [String]], vì vậy một chuỗi khóa-dict với các mảng chuỗi làm giá trị. Tôi đã có hai trong số này với các khóa từ A đến Z và mỗi mục trong số 26 mục này chứa một mảng chuỗi với 5 đến 10 chuỗi.

Xóa dữ liệu có nguồn gốc không giúp được gì. Chỉ bình luận về những khía cạnh đó đã làm cho nó trở lại.

Thành thật mà nói, điều này là vô lý! Apple cần sửa lỗi Xcode! Nó đã chậm kinh khủng khi biên dịch các dự án Swift nhưng những lỗi như thế này là một trình diễn. Tôi không thể làm tốt công việc của mình với cái này!


6

Đối với những người vẫn gặp sự cố này, đây là một giải pháp mà tôi rất thích, giúp bạn không phải nhập từng đối tượng một:

// instead of this, which freezes indexing
let keys = [keyQ, keyW, keyE, keyR, keyT, keyY, ... keyM]    

// and instead of this, which is ugly & lengthy
var keys = [KeyboardKey]()
keys.append(keyQ)
keys.append(keyW)
...
keys.append(keyM)

// use this:
var keys = [KeyboardKey]()
keys.appendContentsOf([keyQ, keyW, keyE, keyR, keyT, keyY, ... keyM])

1
Chà ... tôi cũng gặp phải vấn đề tương tự. Cảm ơn! Tôi đã báo cáo nó là một lỗi cho Apple. Làm những gì bạn nói không hiệu quả với tôi. Tôi phải chia mảng dài của mình thành các mảng nhỏ hơn, mỗi mảng có năm phần tử trở xuống.
ma11hew28 15/12/16

5

Đối với tôi, tôi đã thử tất cả những điều trên mà không thành công; nhưng tất cả những gì tôi phải làm là xóa thư mục dữ liệu có nguồn gốc, sau đó mở một dự án ngẫu nhiên khác, đợi nó lập chỉ mục và bây giờ dự án ban đầu (trục trặc) của tôi hoạt động!

Hãy ủng hộ thế giới phát triển và làm cho các trình biên dịch nhanh chóng của bạn trở thành mã nguồn mở- để chúng tôi không bị cản trở bởi sự kém cỏi của bạn.


3

Tôi đang sử dụng Xcode Phiên bản 7.3 (7D175)

Tôi nghĩ rằng tôi có thể đã tìm ra một vấn đề cơ bản. Ở đó có hai trường hợp tôi bị mắc kẹt trong giai đoạn lập chỉ mục:

  • Tôi đã tạo một bao đóng mà tôi đã gán cho một biến và bỏ qua chữ ký kiểu. Tôi nghĩ rằng xcode có vấn đề với bước suy luận kiểu đó. Nếu tôi nhớ không nhầm thì một trong những đối số là CGPoint, có một hàm tạo quá tải. Giả thuyết của tôi là ở đó có quá nhiều khả năng về những gì mà sự kết thúc của tôi có thể chấp nhận làm đối số.

  • Tôi đã cấu trúc lại một phương thức gốc để thay vì trả về các trường hợp của một kiểu, nó có thể trả về các trường hợp của nhiều kiểu với một lớp cơ sở chung. Có vẻ như ở bất cứ nơi nào tôi sử dụng phương thức factory, tôi phải ép kiểu đối tượng kết quả thành một kiểu cụ thể (bằng as? Hoặc bằng cách gán nó cho một biến chấp nhận một kiểu cụ thể) Một lần nữa bước suy luận kiểu dường như bị hỏng.

Có vẻ như điều tương tự đang xảy ra với các khai báo từ điển được đề cập bởi các cá nhân trước đó. Tôi đã gửi một báo cáo lỗi với apple.


2

Tôi đã gặp sự cố tương tự sau khi nâng cấp lên 6.1. Xcode sẽ gặp khó khăn khi biên dịch hoặc lập chỉ mục mà không tạo ra một thông báo lỗi cụ thể.

Sự cố cuối cùng đã được giải quyết bằng cách chia nhỏ một số biểu thức dài hơn trong các tệp nhanh thành nhiều biểu thức ngắn hơn. Một phần chương trình của tôi kết hợp nhiều biến chuỗi khác nhau để tạo thành một chuỗi dài hơn. Cố gắng kết hợp chúng trong một biểu thức duy nhất và sử dụng toán tử gán phép cộng đều không thành công. Tôi đã có thể làm cho nó hoạt động bằng cách làm điều gì đó tương tự như sau (đơn giản hóa):

var a = "Hello"
var b = " "
var c = "World"
var d = "!"
var partA = a + b
var partB = c + d
var result = partA + partB

Tôi có ý tưởng này do nhận được lỗi sau nhiều lần trong phiên bản Xcode trước đó "Biểu thức quá phức tạp để được giải quyết trong thời gian hợp lý; hãy xem xét chia nhỏ biểu thức thành các biểu thức con riêng biệt."

Hi vọng điêu nay co ich


Vâng, cảm ơn, tôi đã thực sự nhận loại đề xuất này. Và tôi cũng thu hẹp độ dài của một trong các tệp của mình từ 1500 dòng xuống còn khoảng 1200. Và tất nhiên tôi đã tạo một dự án mới và nhập tất cả từng tệp một vào nó. Sau đó, cuối cùng nó sẽ hoạt động trở lại. Không thực sự chắc chắn cái nào là vị cứu tinh cuối cùng.
leonard

Tách ra một biểu thức dài trong Swift đã làm một mẹo nhỏ đối với tôi.
MandisaW

2

Tôi đã vật lộn với cùng một vấn đề. Tôi đã thử hai giải pháp được đề cập (xóa dữ liệu bắt nguồn và xóa .xcworkspace) nhưng không thành công. Tôi cũng đã thử từ từ nhận xét phần lớn mã từng chút một và xóa các tệp cho đến khi hầu như không còn gì và việc lập chỉ mục vẫn bị mắc kẹt.

Tôi đã tìm thấy giải pháp phù hợp với mình, tôi đã mở dự án bằng phiên bản Xcode 6.1 (6A1030) cũ hơn mà không có vấn đề gì khi lập chỉ mục, sau đó quay lại phiên bản Xcode 6.1 (6A1052d) mới nhất mà tôi đang sử dụng trước đó và lập chỉ mục được đã sửa và tiếp tục hoạt động tốt.

Kết luận của tôi là đây là một lỗi với Xcode Phiên bản 6.1 (6A1052d) mà tôi hy vọng sẽ được cải thiện với các bản phát hành trong tương lai.

Sự cố này thỉnh thoảng quay trở lại, bản sửa lỗi tương tự sẽ hoạt động mỗi lần. Tôi đoán một giải pháp khác là chỉ sử dụng Xcode Phiên bản 6.1 (6A1030) cũ hơn nhưng nó sẽ không hoạt động với các thiết bị chạy iOS 8.1 và sẽ không có các bản sửa lỗi mới nhất.


Tôi đã thử hầu hết các đề xuất xung quanh để giải quyết vấn đề lập chỉ mục vĩnh viễn và đây là đề xuất duy nhất phù hợp với tôi. Tôi không có Xcode 6 cũ hơn nhưng tôi có Xcode 5. Nó sẽ không xây dựng, nhưng nó đã lập chỉ mục và sau đó Xcode 6.1 đã lập chỉ mục thành công.
SarahR

Tôi quên đề cập rằng đây chỉ là một giải pháp tạm thời và tôi phải làm lại một vài giờ sau đó.
SarahR

2

Tôi đã thử điều này với Xcode 8.3.3. Đây là kết quả của tôi:

Bạn có thể viết mã Swift hoàn toàn tốt sẽ khiến việc lập chỉ mục bị treo.

Sau khi lập chỉ mục bị treo, nó sẽ bị treo. Thay đổi mã Swift trở lại một thứ gì đó không gây treo chỉ mục không giúp ích được gì, nó vẫn bị treo.

Đóng dự án và mở lại không giúp ích gì trong tình huống đó.

Thoát Xcode và khởi động lại nó sẽ hữu ích. Lập chỉ mục sẽ không bị treo nữa (đó là nếu bạn đã thay đổi mã trở lại thứ gì đó không làm cho nó bị treo).

Khởi động lại máy Mac của bạn cũng hữu ích, mặc dù nó không cần thiết.

Việc treo là do mã Swift hoàn toàn tốt. Một ví dụ mà tôi đã trông giống như

if let date = function1()
?? function2()
?? function3()
?? function4()
?? function5()
?? function6()
?? function7()
?? function8()
?? function9()
?? function10() {
    return date
}

Lập chỉ mục sẽ bị treo. Tôi đã nhận xét hầu hết các "??" và nó vẫn ổn (sau khi thoát và khởi chạy lại Xcode). Không chú thích hết dòng này đến dòng kia. Với một số dòng là ổn, sau đó bỏ ghi chú dòng tiếp theo sẽ làm cho nó bị treo.

Điều duy nhất giúp ích rõ ràng là thay đổi mã của bạn.


2

Trên Xcode của tôi, giải pháp là đóng tất cả các cửa sổ thừa. Vì một số lý do mà nhiều cửa sổ đang mở làm cho Xcode rất chậm.


đối với tôi đây là giải pháp là tốt, ngạc nhiên vì nó làm việc tốt cho một thời gian dài trước đây với cùng một số cửa sổ đang mở
Christian

1

Cuối cùng, tôi đã "giải quyết" được vấn đề, mặc dù đó chỉ là một cách giải quyết.

Tôi đã tạo một dự án khác và thêm từng tệp một vào nó. Sau đó, tôi phát hiện một tệp viewcontroller.swift "rất dài". Sau đó, tôi chia mã của nó thành các mô-đun và biến những mã được sử dụng nhiều lần đó thành các hàm trong một tệp nhanh khác. Ngoài ra, tôi đã gợi ý trực tuyến rằng biểu thức dài nên được chia thành các biểu thức ngắn hơn. Sau đó, lập chỉ mục hoạt động và quá trình biên dịch hoạt động.

Vì vậy, bây giờ, tôi có nó "giải quyết".

NHƯNG, tôi không nghĩ điều này đúng. Xcode IDE phải có nhiều khả năng xử lý tệp nhanh "rất dài" của tôi, chỉ 1500 dòng. Tôi tin rằng đây chắc chắn là một lỗi (tồn tại trong một thời gian dài), mặc dù Xcode 6.1 đã là một bản nâng cấp từ Xcode 6.0.1.


1

Đối với tôi, tôi đã xóa ứng dụng Xcode và tải xuống lại và cài đặt nó. Điều đó đã giải quyết được vấn đề, ít nhất là hơn bây giờ.


1

Lập chỉ mục Xcode thường cho mã của bạn để gợi ý và tự động hoàn thành trong số những thứ khác như trợ giúp bạn trong bảng câu chuyện và ngược lại. Nhưng để làm cho dự án xcode của bạn nhanh hơn, bạn có thể tắt / bật nó qua thiết bị đầu cuối

Tắt
mặc định lập chỉ mục ghi com.apple.dt.XCode IDEIndexDisable 1 Bật mặc định lập chỉ mục ghi com.apple.dt.XCode IDEIndexDisable 0

Nhưng cách tốt hơn là sử dụng một máy mac nhanh với RAM tốt.


2
Việc tắt lập chỉ mục làm tê liệt nghiêm trọng Xcode và không nên làm. Nói với ai đó mua một máy Mac mới không bao giờ là câu trả lời, một máy tính xách tay 2 năm tuổi sẽ có thể xử lý Xcode mới nhất.
Knight0fDragon

macOS 10.13 Beta 7 đã giới thiệu một thứ gì đó gây sự cố cho cả Xcode 9 Beta 6 và Xcode 8 ngay sau khi trình lập chỉ mục chạy. Tắt nó đi là cách duy nhất để tiếp tục sử dụng Xcode, ngay cả với phiên bản bị hỏng.
Pegolon

0

Nếu bạn không ngại hoàn nguyên về 6.0.1 cho đến khi họ tìm ra, thì đó là điều phù hợp với tôi. Tôi đã gặp vấn đề tương tự với cả 6.1 và 6.1.1. Bây giờ tôi ổn. Tôi sẽ thử 6.2 khi nó ra mắt.

Bạn có thể tìm thấy các phiên bản trước của phần mềm apple trên trang web nhà phát triển chính thức của họ, tại đây: https://developer.apple.com/downloads/index.action

Nếu bạn làm điều này, hãy đảm bảo xóa bản sao Xcode hiện tại của bạn.


0

Tôi đang sử dụng Xcode 6.1.1 với các tệp nhanh trên cùng một chiếc MacBook Pro chính xác.

Khi tôi tiếp tục thêm các hàng vào một mảng chuỗi 3D, Xcode đột nhiên không sử dụng được và bây giờ tôi không thể làm gì cả.

Sẽ cố gắng hoàn nguyên về 6.1 và hy vọng sự cố sẽ biến mất.


Tôi có cùng một vấn đề. Sau khi thêm một loạt các từ điển xcode trở nên không sử dụng được ... Bạn đã tìm ra giải pháp chưa?
Almazini

Tôi quay lại Xcode 6.1 đã hoạt động tốt hơn. Nó không bị mắc kẹt trong việc lập chỉ mục mãi mãi, nhưng đôi khi tôi sẽ gõ và nhận được quả bóng bãi biển trong 4 giây. Nhìn chung, tôi đã có thể viết mã đủ để hoàn thành công việc. Tôi đã không thay đổi bất kỳ mã nào của mình. Mặc dù trên Xcode 6.1, pin của macbook pro dường như không bị ảnh hưởng quá nhiều, nhưng trên macbook air mid 2013 của tôi đang chạy 6.1.1, thời lượng pin hoàn toàn bị ảnh hưởng. Nó sẽ kéo dài từ ~ 12 giờ đến 2 giờ sau khi tôi khởi động Xcode.
vườn888

0

Tôi thấy điều này trong Xcode 6.3.2. Tôi đã thực sự hy vọng rằng một năm sau khi phát hành, họ sẽ có trình biên dịch hoạt động, nhưng than ôi.

Nếu không có giải pháp nào ở trên hiệu quả, hãy thử kiểm tra mã của bạn để tìm lỗi cú pháp. Trong quá trình tái cấu trúc, tôi đã trích xuất một bao đóng nhưng quên điều kiện các tham số:

    let hangsInsteadOfError = { l, r in
        return l.nameFirst < r.nameFirst
        || l.nameFirst == r.nameFirst && l.nameLast < r.nameLast }

    let fixingErrorAvoidsHang = { (l:User, r:User) -> Bool in
        return l.nameFirst < r.nameFirst
            || l.nameFirst == r.nameFirst && l.nameLast < r.nameLast }

Nếu tôi đã học được bất cứ điều gì từ cách làm việc trong Swift, thì đó là làm việc theo từng bước, để tránh phải quay lại quá nhiều để tìm ra mã vi phạm.


0
  1. Trạng thái lập chỉ mục của bạn là "Vòng tròn chỉ báo" hay "Thanh tiến trình"?
  2. Nếu nó là một "Vòng tròn chỉ báo", điều đó có nghĩa là nó đã bị kẹt ngay từ đầu.
  3. Mở và kiểm tra các dự án khác của bạn, nếu chúng đều giống nhau, điều đó có nghĩa là đó là vấn đề hệ thống.
  4. Chỉ cần khởi động lại máy tính của bạn và mọi thứ sẽ ổn.

0

Tôi sử dụng Xcode 8.2 và cũng đã kết thúc trong vấn đề này. Nó bắt đầu sau khi tôi xác định một biến tuple phức tạp - một mảng tuple với dải con của tuple. Mọi thứ trở nên thực sự chậm khi mảng con của tuple có thuộc tính được tính toán theo chương trình.

Như một số câu trả lời khác đã lưu ý, việc lập chỉ mục sẽ mất vĩnh viễn và tôi tin rằng nó đang cố gắng suy ra các loại biến.

Tôi đã giải quyết vấn đề đầu tiên bằng cách xác định rõ ràng biến với các loại bao gồm. Khi cập nhật thuộc tính, tôi tính toán nó trước rồi gán nó cho bộ tuple, thay vì tính toán trong việc xác định biến.

Đây là một mã ví dụ.

var sectionTuples: [(section: String, rows: [(name: String, subtitle: String)])] = []
let subtitle1: String = "" // something calculated dynamically
let subtitle2: String = "" // something calculated dynamically
sectionTuples = [(
section: "Section 1", rows: [
(name: "name1", subtitle: subtitle1),
(name: "name2", subtitle: subtitle2)
])]

Điểm mấu chốt là đừng để Xcode suy ra các cấu trúc phức tạp.


0

Tôi có những vấn đề giống nhau. Xcode của tôi là 8.2.1. Nhưng trong trường hợp của tôi, tôi muốn tạo một mảng từ điển với 33 cặp khóa-giá trị. Tôi đã làm theo cách sau đây nhưng bị mắc kẹt trong việc lập chỉ mục:

var parameter = [String : AnyObject]()
var finalArray = [parameter]

for item in listArray
{
    parameter = ["A": item.a as AnyObject, "B": item.b as AnyObject, "C": item.c as AnyObject, ... , "Z": item.z as AnyObject]

    finalArray.append(parameter)
}

Sau đây làm việc cho tôi:

var parameter = [String: AnyObject]()
var finalArray = [parameter]

for item in listArray
{
    parameter["A"] = listArray.a as AnyObject
    parameter["B"] = listArray.b as AnyObject
    parameter["C"] = listArray.c as AnyObject
    parameter["D"] = listArray.d as AnyObject 
    .
    .
    .
    parameter["Z"] = listArray.z as AnyObject 
    finalArray.append(parameter)
}

0

Tôi cũng đã gặp sự cố này và đã giải quyết nó bằng cách xóa / thay đổi các biểu thức bằng toán tử "+".

Tôi đã thay đổi điều này:

var mainArray = arrayOne + arrayTwo + arrayThree + arrayFour + arrayFive

Về điều này:

var mainArray = arrayOne
mainArray += arrayTwo
mainArray += arrayThree
mainArray += arrayFour
mainArray += arrayFive

Nó đã giải quyết được vấn đề.

Máy của tôi là MBP tối đa vào cuối năm 2013


Chính xác là kinh nghiệm của tôi. Nó bị treo với mã Swift hoàn toàn tốt và cách duy nhất để khắc phục là thay đổi mã.
gnasher729

0

Bạn có thể muốn cập nhật lên Xcode 6.1.1

Nó đã chính thức được phát hành và giải quyết vấn đề lập chỉ mục cho chúng tôi. Trong phần mô tả bản cập nhật, nó nói rằng họ đã áp dụng các bản sửa lỗi về độ ổn định nên rất có thể nó sẽ hoạt động ổn định hơn.


7
Hấp dẫn. Đối với tôi, 6.1.1 đã giới thiệu vấn đề lập chỉ mục vô tận, với một dự án đang mở tốt trong 6.1. ký tên
Pascal Bourque

Tôi hiểu rồi. Trong trường hợp của chúng tôi, chúng tôi cũng đã đơn giản hóa các biểu thức và giảm kích thước lớp bằng cách sử dụng các lớp mở rộng. Điều đó khá là nực cười mà chúng tôi phải làm nhưng đó là những gì chúng tôi phải làm. Và nó dường như đang thực hiện thủ thuật cho bây giờ. Ngoài ra bằng cách nhận xét ra các dòng, chúng tôi đã thu hẹp đoạn mã nào thực sự là "quá phức tạp" theo những gì trình biên dịch Swift nghĩ và giảm độ phức tạp càng nhiều càng tốt. Hy vọng họ sẽ sớm sửa lỗi này vì nó khá khó chịu.
Angel Naydenov


0

Tôi đã có những biểu hiện như:

let x = (value as? Int) ?? someDefault

cũng thế

guard let x = (dateFormatter().string(from: Date()) + msg + "\n").addingPercentEncoding(...) else { ... }

Vì vậy, vấn đề là viết lại tệp của bạn để chỉ chứa các biểu thức cấp mẫu giáo và vấn đề lập chỉ mục sẽ biến mất.


0

Xcode 11.5 (11E608c) và vẫn các vấn đề tương tự, 6 năm sau câu hỏi ban đầu. Tôi ước tôi có thể "đánh dấu" apple trong câu hỏi này để họ có thể nhìn thấy mớ hỗn độn này. Đây là một dự án lớn (> 1000 tệp) và tôi đã ở dưới đồng hồ nên khi tôi nhận thấy chỉ mục đóng băng, tôi đã có hơn 100 tệp đã thay đổi và không thể quay lại.

Tôi đã thử mọi thứ:

  1. xóa dữ liệu có nguồn gốc và xây dựng
  2. Khởi động lại xcode, khởi động lại mac
  3. xóa và thêm nguồn
  4. Đã tìm kiếm nghĩa đen của từ điển, v.v.

Vấn đề là tạo mảng:

private var overlayColors: [UIColor] = [UIColor(hex: "#b71c1c"), UIColor(hex: "#4a148c"),
                                        UIColor(hex: "#880e4f"), UIColor(hex: "#1de9b6"),
                                        UIColor(hex: "#f50057"), UIColor(hex: "#311b92"),
                                        UIColor(hex: "#f44336"), UIColor(hex: "#651fff"),
                                        UIColor(hex: "#d500f9"), UIColor(hex: "#3d5afe"),
                                        UIColor(hex: "#bf360c"), UIColor(hex: "#0d47a1"),
                                        UIColor(hex: "#006064"), UIColor(hex: "#2979ff"),
                                        UIColor(hex: "#ff6f00"), UIColor(hex: "#1a237e"),
                                        UIColor(hex: "#795548"), UIColor(hex: "#004d40"),
                                        UIColor(hex: "#00e676"), UIColor(hex: "#01579b"),
                                        UIColor(hex: "#33691e"), UIColor(hex: "#827717"),
                                        UIColor(hex: "#76ff03"), UIColor(hex: "#ffc400"),
                                        UIColor(hex: "#e65100"), UIColor(hex: "#00b0ff"),
                                        UIColor(hex: "#ff3d00"), UIColor(hex: "#616161"),
                                        UIColor(hex: "#263238"), UIColor(hex: "#ff1744")]

Điều giúp tôi phát hiện ra tệp nhanh không tốt là khi lập chỉ mục đã đóng băng xcode, tôi đã thực hiện các bước sau

  1. mở màn hình hoạt động -> quy trình "nhanh" -> hiển thị thông tin quy trình -> mở Tệp và Cổng. Thao tác này sẽ cung cấp cho bạn danh sách các tệp mà quá trình này đang chạy, xem xét danh sách các tệp xấu có thể có của bạn
  2. Công cụ hữu ích khác là tập lệnh SOURCEKIT_LOGGING=3 /Applications/Xcode.app/Contents/MacOS/Xcode &> ~/Documents/xcode.lognày sẽ khởi động Xcode với chi tiết cấp 3 và bắt đầu đăng nhập vào tệp nhật ký.
  3. Tìm kiếm trong tệp nhật ký các mục nhập cuối cùng cho các tệp nhanh của bạn, ví dụ: "my_project / Source / App /"

Nó không phải là một giải pháp đầy đủ nhưng sẽ hữu ích nếu bạn đi sâu vào và biết nơi để tìm.

mở màn hình hoạt động -> quy trình "nhanh" -> hiển thị thông tin quy trình -> mở Tệp và Cổng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.