将用户定义的对象添加到 NSMutableArray
add user defined object to NSMutableArray
我有以下 swift class 并想将其添加到 NSMutableArray
class DrawerItem : NSObject{
var tag : String = ""
var title : String = ""
override init () {
self.tag = "";
self.title = "";
}
init(tag: String) {
self.tag = tag
}
init(title: String) {
self.title = title
}
}
self.dataSource = [NSMutableArray new];
[self.dataSource addObject:@"hello"]; //it works
DrawerItem *item = [DrawerItem new]; // not working
item.tag = @"test";
item.title = @"test";
[self.dataSource addObject:item];
并给我以下异常
uncaught exception 'NSInvalidArgumentException', reason: '-[Khawater.DrawerItem isEqualToString:]: unrecognized selector sent to instance
你可以这样做
import Foundation
class DrawerItem : NSObject{
var tag : String = ""
var title : String = ""
override init () {
self.tag = "";
self.title = "";
}
init(tag: String) {
self.tag = tag
}
init(title: String) {
self.title = title
}
}
//creating the first obj
var drawer: DrawerItem = DrawerItem()
drawer.tag = "Tag Test"
drawer.title = "Title Test"
//creating the second obj
var drawer1: DrawerItem = DrawerItem()
drawer1.tag = "Tag Test 1"
drawer1.title = "Title Test 1"
var drawerArray:[DrawerItem] = [DrawerItem]()
//adding to the drawerArray
drawerArray.append(drawer)
drawerArray.append(drawer1)
//testing the array
for x in drawerArray{
print(x.title)
}
我认为这里的问题是在您的数据源数组中混合了 NSString
和 DrawerItem
。在稍后的代码中,您尝试仅将其项目用作字符串,这会引发运行时错误。
解决方案编号。 1
在 swift var dataSource: [DrawerItem] = []
中声明数组 这将抛出编译错误
解决方案编号。 2
使用 objective-c 轻量级泛型 @property (nonatomic, strong) NSMutableArray<DrawerItem*> *dataSource;
如果不匹配
将生成编译器警告
我有以下 swift class 并想将其添加到 NSMutableArray
class DrawerItem : NSObject{
var tag : String = ""
var title : String = ""
override init () {
self.tag = "";
self.title = "";
}
init(tag: String) {
self.tag = tag
}
init(title: String) {
self.title = title
}
}
self.dataSource = [NSMutableArray new];
[self.dataSource addObject:@"hello"]; //it works
DrawerItem *item = [DrawerItem new]; // not working
item.tag = @"test";
item.title = @"test";
[self.dataSource addObject:item];
并给我以下异常
uncaught exception 'NSInvalidArgumentException', reason: '-[Khawater.DrawerItem isEqualToString:]: unrecognized selector sent to instance
你可以这样做
import Foundation
class DrawerItem : NSObject{
var tag : String = ""
var title : String = ""
override init () {
self.tag = "";
self.title = "";
}
init(tag: String) {
self.tag = tag
}
init(title: String) {
self.title = title
}
}
//creating the first obj
var drawer: DrawerItem = DrawerItem()
drawer.tag = "Tag Test"
drawer.title = "Title Test"
//creating the second obj
var drawer1: DrawerItem = DrawerItem()
drawer1.tag = "Tag Test 1"
drawer1.title = "Title Test 1"
var drawerArray:[DrawerItem] = [DrawerItem]()
//adding to the drawerArray
drawerArray.append(drawer)
drawerArray.append(drawer1)
//testing the array
for x in drawerArray{
print(x.title)
}
我认为这里的问题是在您的数据源数组中混合了 NSString
和 DrawerItem
。在稍后的代码中,您尝试仅将其项目用作字符串,这会引发运行时错误。
解决方案编号。 1
在 swift var dataSource: [DrawerItem] = []
中声明数组 这将抛出编译错误
解决方案编号。 2
使用 objective-c 轻量级泛型 @property (nonatomic, strong) NSMutableArray<DrawerItem*> *dataSource;
如果不匹配