gpt4 book ai didi

ios - 如何从 Objective-C 代码访问 Swift 类级枚举

转载 作者:行者123 更新时间:2023-11-28 13:12:17 24 4
gpt4 key购买 nike

我正在重写,我正处于将我的 Core Data 模型转换为 Swift 的阶段。其中一个模型 PointOfInterest 包含一个名为 typesenum,用于识别对象的 PointOfInterest 类型是:

@class Port;

@interface PointOfInterest : NSManagedObject

enum types {
kGeneral,
kRestaurant,
kTypeCount
};

@property (nonatomic, retain) NSNumber * averageRating;
@property (nonatomic, retain) NSString * city;
@property (nonatomic, retain) NSString * countryName;
@property (nonatomic, retain) NSNumber * id;
@property (nonatomic, retain) NSString * imageURL;
@property (nonatomic, retain) NSNumber * latitude;
@property (nonatomic, retain) NSNumber * longitude;
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSString * phone;
@property (nonatomic, retain) NSString * postalCode;
@property (nonatomic, retain) NSString * priceLevel;
@property (nonatomic, retain) NSNumber * rankingNumber;
@property (nonatomic, retain) NSString * rankingString;
@property (nonatomic, retain) NSString * state;
@property (nonatomic, retain) NSString * street1;
@property (nonatomic, retain) NSString * street2;
@property (nonatomic, retain) NSNumber * totalReviews;
@property (nonatomic, retain) NSNumber * type;
@property (nonatomic, retain) NSString * webURL;
@property (nonatomic, retain) NSSet *ports;
@end

@interface PointOfInterest (CoreDataGeneratedAccessors)

- (void)addPortsObject:(Port *)value;
- (void)removePortsObject:(Port *)value;
- (void)addPorts:(NSSet *)values;
- (void)removePorts:(NSSet *)values;

@end

在 Swift 中,代码如下所示:

// PointOfInterest.swift

class PointOfInterest: NSManagedObject {
@NSManaged var averageRating: NSNumber
@NSManaged var city: String
@NSManaged var countryName: String
@NSManaged var id: NSNumber
@NSManaged var imageURL: String
@NSManaged var latitude: NSNumber
@NSManaged var longitude: NSNumber
@NSManaged var name: String
@NSManaged var phone: String
@NSManaged var postalCode: String
@NSManaged var priceLevel: String
@NSManaged var rankingNumber: NSNumber
@NSManaged var rankingString: String
@NSManaged var state: String
@NSManaged var street1: String
@NSManaged var street2: String
@NSManaged var totalReviews: NSNumber
@NSManaged var type: NSNumber
@NSManaged var webURL: String
@NSManaged var ports: NSSet

}

包含 enum 的扩展在不同的文件中(我重命名了 enum 值)

// PointOfInterest+Helpers.swift
extension PointOfInterest
{
@objc enum Types:Int
{
case General
case Restaurant
case TypeCount
}

}

在我最初的 Objective-C View 之一中,我有以下行(和其他一些,但我们将专注于这一行,因为它们都有相同的错误)生成错误:Semantic问题:使用未声明的标识符“kGeneral”

poi.type = [NSNumber numberWithInt: kGeneral];

即使我将 kGeneral 更改为 General 甚至 TypesGeneral,似乎也无法访问此 enum来自 PointOfInterest 的值。 this question的答案没有帮助。

所以我的问题是:如何从 Objective-C 代码中检索 Swift 类级 enum 的值?

最佳答案

how do I retrieve the value of a Swift class-level enum from Objective-C code

你不能。 Objective-C 没有将枚举视为在另一个类“内部”的概念。如果您希望 Objective-C 能够看到它,请将枚举放在顶层。

关于ios - 如何从 Objective-C 代码访问 Swift 类级枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30874368/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com