【问题标题】:Assigning to nsarray strong form incompitable void [closed]分配给 nsarray 强形式不可兼容的 void [关闭]
【发布时间】:2025-12-22 15:45:14
【问题描述】:
youtubeManager *ym=[[youtubeManager alloc] init];

NSArray *ns=[[NSArray alloc]init];

ns=[ym receivedGroupsJSON:data];//Showing error in this line


- (NSArray *)receivedGroupsJSON:(NSData *)objectNotation
{

    NSError *error = nil;
    NSArray *groups = [youtubemodelbuilder groupsFromJSON:objectNotation error:&error];

   return groups;
}

分配给 NSArray 强格式不兼容 void

【问题讨论】:

  • 分配给 NSArray *_strong 形式不兼容 void
  • 错误说,你要分配空的东西。
  • 代码中有多种方式的可能性。通过看到这段代码。无法判断解决方案
  • 你为什么不检查数组是否为 nil 然后检查 NSError 值?

标签: ios objective-c nsarray


【解决方案1】:

ns 被声明为 NSArray,但编译器认为 [ym receivedGroupsJSON:data] 将返回 void

你已经展示了一个方法,表明它返回一个 NSArray。

要么

  1. 在此类的头文件 (@interface) 中,您声明与返回 void 相同的方法,或者
  2. ym 指向的另一个类中有另一个同名方法,它返回一个 void。

另外,这两行的第一行是没有意义的:

NSArray *ns=[[NSArray alloc]init];
ns=[ym receivedGroupsJSON:data];//Showing error in this line

因为你正在创建一个新的 NSArray,让ns 指向它,然后在下一行,你让ns 指向一个完全不同的 NSArray。只需将整个内容替换为:

NSArray *ns;
ns=[ym receivedGroupsJSON:data];//Showing error in this line

甚至更简单:

NSArray *ns = [ym receivedGroupsJSON:data];

【讨论】:

    最近更新 更多