gpt4 book ai didi

ios - JSONModel:填充泛型类型的 NSArray

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:54:24 27 4
gpt4 key购买 nike

我在我的 iOS 应用程序中使用 JSONModel,但我遇到了一些警告,让我稍微解释一下。

假设我有这个 JSONModel

CTVContact.h

@interface CTVContact : JSONModel
@property (nonatomic, strong) NSArray<Optional, CTVPhone> *phone;
@end

CTVContact.m

NSMutableArray *phones = [[NSMutableArray alloc] init];
for(NSString *p in personPhones) {
CTVPhone *phn = [[CTVPhone alloc] init];
phn.original = p;
[phones addObject:phn];
}
phone = [NSArray arrayWithArray:phones];

基本上这一切都像一个魅力,但我收到一条警告,说明如下:

Incompatible pointer types assigning to 'NSArray<Optional,CTVEventParticipant> *' from 'NSArray *'

我该如何绕过该警告?如果没有警告,我找不到将所有数组值分配给电话数组的正确方法。

提前致谢!

最佳答案

NSArray<Optional, CTVPhone> *phone;定义一个变量,该变量接受一个符合 2 个协议(protocol)的数组。如果您尝试将变量 ( phone) 设置为未声明其符合这些协议(protocol)的数组,那么您将收到编译警告。

phone = [NSArray arrayWithArray:phones];只是创建一个“普通”数组,没有实现任何特殊协议(protocol)。所以你会收到警告。

可能正确的做法是从@property 定义中删除协议(protocol)。除非你有 NSArray符合您实际应该使用的那些协议(protocol)的子类...

或者,假设您不尝试调用可能在这些协议(protocol)中定义的任何方法:

phone = (NSArray <Optional, CTVPhone> *)[NSArray arrayWithArray:phones];

它添加了一个对编译器基本上意味着的转换:“相信我,没问题”...

关于ios - JSONModel:填充泛型类型的 NSArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21731893/

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