我想在Objective-C中使用swift类
我想在objective-c文件中使用swift类,需要修改字符串值 另外,要在我想在Objective-C中使用swift类,objective-c,swift,Objective C,Swift,我想在objective-c文件中使用swift类,需要修改字符串值 另外,要在ObjPost 我尝试在ProjectName Swift.h文件中导入这两个类 @class ObjPost; @class ObjMedia; @class ObjPost; @class ObjMedia; 下面是我的swift课程 @objc class ObjPost:NSObject, Codable { /// Post ID var id:Int /// var contentAvailab
ObjPost
我尝试在ProjectName Swift.h文件中导入这两个类
@class ObjPost;
@class ObjMedia;
@class ObjPost;
@class ObjMedia;
下面是我的swift课程
@objc class ObjPost:NSObject, Codable {
/// Post ID
var id:Int
///
var contentAvailable : Bool
/// Post User ID
var userId : Int
/// Post user name
var userName : String
/// Profile Image (Display Picture)
var userProfileImage: String
var subTitle : String
var postedSince : String
var isPin : Bool
var location : String
var lat : String
var long: String
var albumName:String
var isLiked: Bool
var isDisliked : Bool
var likes : Int
var dislikes: Int
var shares: Int
var comments:Int
//var postDescription: String?
var postDescription: String?
// var objPostDescription: String
var albumId: Int
var privacy: Int
var isEditable: Bool
var media:[ObjMedia]
}
我正在使用这个类,但我无法在objective-c文件中获取变量 当我从ObjPost获取用户名时,将发生错误
在转发类对象“ObjPost”中找不到属性“userName”
.使用@objc声明变量,如下面的代码,然后重试:
@objc var userName : String
你说上面的代码不起作用,所以我试着编写一个完整的代码。我在项目中创建了一个文件Country.swift,我在其中编写了以下代码:
@objc class CountrySwift: NSObject {
var name: String = ""
var ranking: String = ""
}
@class CountrySwift;
@interface ObjectiveCClass : NSObject
-(CountrySwift* ) countryObject;
@end
然后在something.m文件中我写到:
#import "TargetName-Swift.h"
如果TargetName包含空格,请将空格替换为“\u1”
然后使用如下类:
CountrySwift *country = [[CountrySwift alloc] init];
country.name = @"Bangladesh";
这工作没有任何错误
如果您还需要将此swift类导入.h文件(不要在.h文件中导入TargetName swift.h),请尝试以下代码:
@objc class CountrySwift: NSObject {
var name: String = ""
var ranking: String = ""
}
@class CountrySwift;
@interface ObjectiveCClass : NSObject
-(CountrySwift* ) countryObject;
@end
我尝试在ProjectName Swift.h文件中导入这两个类
@class ObjPost;
@class ObjMedia;
@class ObjPost;
@class ObjMedia;
你称之为进口,但它们不是。它们只是预先声明。它们不会告诉编译器关于这些类的任何信息
有一个共享的Objective-C标题。在“Objective-C生成的接口头名称”下查看应用程序目标的构建设置,以了解其名称。它将类似于MyApp Swift.h。您需要在所有需要它的实现文件的顶部导入at文件(.m文件,而不是.h文件):
在要使用swift类的目标c文件中,您是否编写了“#import ProjectName swift.h”?您不需要直接导入swift类。是的,我在我的objective-c文件中导入ProjectName Swift.h文件我在我的objective-c文件中创建了
ObjPost
,但当我尝试在用户名中赋值时,错误将按照上面的屏幕截图发生。你是否在.m文件中导入了该文件?我需要创建ObjPost类的属性,所以我导入.h文件。这是工作文件。创建属性没有任何错误,但是,当我尝试从ObjPost访问其他变量时,会出现上述问题所示的错误。ProjectName Swift.h应导入到.m文件中。我在答案中添加了完整的过程。如果我导入到.m文件中,那么在不导入到.h文件的情况下,我应该如何将引用从Swift文件发送到objective-c文件?Swift具有不同的导入文件请坚持你问的问题。你照我说的去做,错误就消失了,完成了。