我想在Objective-C文件中使用swift类,并且需要修改字符串值。
还要在ObjPost
中使用媒体类
我尝试将两个类都导入ProjectName-Swift.h文件中
@class ObjPost;
@class ObjMedia;
下面是我的速成班
@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]
}
@objc class ObjMedia:NSObject, Codable {
/// Media ID
var id: Int
/// 1==Image, 2==Video
var type: Int // 1 = Image, 2=Video
var url: String
var description: String?
var thumb: String
var isLiked: Bool
var isDisliked:Bool
/// like counter
var likes:Int
/// dislike counter
var dislikes: Int
/// share counter
var shares: Int
/// comment counter
var comments: Int
var isEditable:Bool
var isPin: Bool
var isCoverMedia: Bool
}
我正在使用此类,但无法在Objective-C文件中获取变量。
当我从ObjPost获取userName时,将发生错误
Property 'userName' cannot be found in forward class object 'ObjPost'
答案 0 :(得分:0)
使用@objc声明变量,如下面的代码,然后尝试:
@objc var userName : String
您说的上述方法不起作用,因此我尝试编写完整的代码。我在该项目中创建了一个文件Country.swift,在其中编写了以下代码:
@objc class CountrySwift: NSObject {
var name: String = ""
var ranking: String = ""
}
然后在我编写的something.m文件中:
#import "TargetName-Swift.h"
如果TargetName包含空格,请用'_'替换空格 然后使用类似的类:
CountrySwift *country = [[CountrySwift alloc] init];
country.name = @"Bangladesh";
这有效,没有任何错误。
如果您还需要将此swift类导入.h文件(不要在.h文件中导入TargetName-Swift.h),请尝试如下代码:
@class CountrySwift;
@interface ObjectiveCClass : NSObject
-(CountrySwift* ) countryObject;
@end
答案 1 :(得分:0)
我尝试将两个类都导入ProjectName-Swift.h文件中
@class ObjPost; @class ObjMedia;
您将这些导入称为,但不是。它们只是前向声明。他们没有告诉编译器这些类的信息。
有一个共享的Objective-C标头。在“ Objective-C生成的接口头名称”下查看应用程序目标的构建设置,以了解其名称。类似于 MyApp-Swift.h 。您需要在所有需要导入的实现文件( .m 文件,而不是 .h 文件)顶部的文件处导入:
#import "MyApp-Swift.h" // except you need to get the name right