2015-03-11 17 views
64

Vì vậy, tôi đã tạo một ứng dụng và mọi thứ đã hoạt động rất tốt. Nhưng hôm nay tôi đã tạo một lớp mới như thường lệ và vì lý do nào đó trong lớp này, tôi không thể truy cập biến Public/Global từ các lớp khác. Tất cả các lớp khác có thể, nhưng bây giờ khi nào tôi cố gắng làm một lớp mới thì tôi không thể. Làm thế nào điều này sẽ được cố định?'Sử dụng số nhận dạng chưa được giải quyết' trong Swift

Tôi đang sử dụng Swift và Xcode 6.

Lớp làm việc:

import UIKit 
import Foundation 
import Parse 
import CoreData 

var signedIn = true 

class ViewController: UIViewController { 

New Class:

import UIKit 

class NewClass: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     signedIn = false 

} 

Nhưng trên signedIn = false

tôi nhận được use of unresolved identifier signedIn

+0

và vâng tôi đã bị xóa và tái tạo lớp này nhiều lần –

+0

Hãy thể hiện mã của bạn, cả hai làm việc và không làm việc. – Wez

+0

Bạn có thể chỉ định phiên bản XCode/Swift bạn đang sử dụng (nếu là phiên bản beta hay không)? – lchamp

Trả lời

196

Một vấn đề có thể là lớp mới của bạn có một mục tiêu khác nhau hoặc Mục tiêu khác nhau từ mục tiêu khác.

Ví dụ: nó có thể có mục tiêu thử nghiệm trong khi mục tiêu khác không có. Đối với trường hợp cụ thể này, bạn phải bao gồm tất cả các lớp của bạn trong mục tiêu thử nghiệm hoặc không có lớp nào trong số chúng.

Targets

+0

Nếu lớp học ở một mục tiêu khác, hãy đảm bảo bạn nhập nó vào đầu tập tin nhanh chóng của bạn – Medhi

+0

Đánh lừa tôi mỗi lần ... – TheEye

1

Vì bạn chưa khai báo. Nếu bạn muốn sử dụng một biến của lớp khác, bạn phải sử dụng

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    var DestViewController : ViewController = segue.destinationViewController as ViewController 
    DestViewController.signedIn = false 
} 

Bạn phải đặt mã này vào cuối của mã NewClass

+0

có nhưng tôi đã sử dụng các lớp khác và chúng đã làm việc tốt mà không có nó, chỉ khi tôi tạo lớp mới này . –

+0

Trong ứng dụng của tôi, tôi đã sử dụng nó và nó hoạt động. Hãy thử nó – Fil0tti

+2

Điều này sẽ không hoạt động, anh ta có biến signedIn được khai báo trong phạm vi toàn cục, không phải bên trong lớp của anh ta. – Sam

1

Đôi khi trình biên dịch bị nhầm lẫn về cú pháp trong lớp học của bạn. Điều này xảy ra rất nhiều nếu bạn dán vào nguồn từ một nơi khác.

Hãy thử giảm tệp nguồn "chưa được giải quyết" xuống mức tối thiểu, vệ sinh và xây dựng. Một khi nó xây dựng thành công thêm tất cả sự phức tạp trở lại lớp học của bạn.

Điều này đã làm cho nó biến mất đối với tôi khi khởi động lại Xcode không hoạt động.

0

Một nơi khác tôi đã nhìn thấy lỗi này là khi dự án của bạn có nhiều mục tiêunhiều cầu nối tiêu đề. Nếu đó là một lớp được chia sẻ, hãy đảm bảo bạn thêm tài nguyên vào tất cả các tiêu đề bắc cầu.

Một mẹo hay để tìm trong bảng điều khiển Vấn đề điều hướng bên trái; đối tượng gốc sẽ hiển thị mục tiêu đang phát hành khiếu nại.

1

Số NewClass được kế thừa từ UIViewController. Bạn đã khai báo signedIn trong ViewController. Nếu bạn muốn NewClass để có thể xác định biến đó, nó sẽ phải được khai báo trong lớp mà NewClass kế thừa của bạn.

2

Đối với tôi, lỗi này xảy ra vì tôi đang cố gọi hàm lồng nhau. Điều duy nhất tôi phải làm là cố định chức năng ra đến phạm vi hiển thị.

0

Nếu điều này là liên quan đến một lớp học mà bạn đã tạo, hãy chắc chắn rằng lớp không được lồng nhau.

F.e

A.swift

class A { 

    class ARelated { 

    } 
} 

gọi var b = ARelated() sẽ cho 'Sử dụng định danh chưa được giải quyết: ARelated'.

Bạn có thể:

1) tách lớp nếu muốn trên cùng một file:

A.swift

class A { 

} 

class ARelated { 

} 

2) Duy trì cấu trúc tương tự của bạn và sử dụng kèm theo lớp để đến lớp con:

var b = A.ARelated

0

Tôi đã phạm sai lầm ngu ngốc. Tôi quên đề cập đến lớp là công khai hoặc mở trong khi cập nhật mã trong không gian làm việc cocoapod.

Xin đừng kiểm tra xem accesor nếu làm việc trong không gian làm việc riêng biệt.

0

Tôi gặp lỗi này đối với Mantle Framework trong Dự án mục tiêu-Swift của tôi. gì tôi đã cố gắng là,

  1. Kiểm tra nếu nhập khẩu là có trong Bridging-Header.h nộp
  2. Thay đổi thành viên Target cho khung trong Mantle.h tập tin như thể hiện trong ảnh chụp màn hình dưới đây.

Chuyển đổi giữa Tư cách thành viên riêng tư đầu tiên xây dựng dự án, kết thúc với lỗi. Sau đó, xây dựng dự án với tư cách thành viên công khai cho tất cả các khuôn khổ xuất hiện cho Tệp Mantle.h, bạn phải thành công.

Nó chỉ là một lỗi của tòa nhà có nhiều khuôn khổ dự án Objective-C Swift.

enter image description here

Các vấn đề liên quan