gpt4 book ai didi

swift - 如果结构项等于 nil

转载 作者:行者123 更新时间:2023-11-28 15:55:05 25 4
gpt4 key购买 nike

我有一个 tableView,我试图每隔特定次数填充广告。我正在使用一个结构来存储我的变量。

struct postStruct
{
var image : UIImage?
var label : String?
var captions : String?
var ad: GADNativeExpressAdView?
}

然后我在某些地方附加某些东西。我的 tableview 中的 if 语句有问题,如果变量不等于 nil,我想在其中加载广告。这是我当前的代码,它只是在 else 语句中用常规单元格填充整个 TableView 。我怀疑它可能与 indexPath 有关,但我已经尝试了所有给定的。

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
if arrayOfPosts[indexPath.row].ad != nil{
let adView = arrayOfPosts[indexPath.row].ad
let reusableAdCell = tableViewOne.dequeueReusableCellWithIdentifier("NativeExpressAd", forIndexPath: indexPath) as! NativeExpressAd

for subView in reusableAdCell.contentView.subviews {
subView.removeFromSuperview()
}
reusableAdCell.addSubview(adView!)
adView?.center = reusableAdCell.contentView.center
return reusableAdCell
}
else{
let cell = tableViewOne.dequeueReusableCellWithIdentifier("popularCell", forIndexPath: indexPath) as! PopTableViewCell
return cell
}
}

这是我两次填充 arrayOfPosts

func getData()
{
arrayOfPosts = [
postStruct.init(image: UIImage(named: "profileIcon-1") , label: "Test 1", captions: "Test 1", ad: nil),
postStruct.init(image: UIImage(named: "profileICONTRY3-1") , label: "Test 2", captions: "Test 2", ad: nil),
postStruct.init(image: UIImage(named: "self") , label: "Test 3", captions: "Test 3", ad: nil),
postStruct.init(image: UIImage(named: "profileIcon-1") , label: "Test 4", captions: "Test 4", ad: nil), postStruct.init(image: UIImage(named: "profileICONTRY3-1") , label: "Test 5", captions: "Test 5", ad: nil),
postStruct.init(image: UIImage(named: "self") , label: "Test 6", captions: "Test 6", ad: nil)
]




}

这是我得到广告的地方

func NativeAdsExpress


{
var index = 2
let size = GADAdSizeFromCGSize(CGSize(width: adWidth, height: adHeight))
while index < arrayOfPosts.count
{
let adView = GADNativeExpressAdView(adSize: size)
adView?.adUnitID = "ca-app-pub-6067365138487039/8892521700"
adView?.rootViewController = self
adView?.delegate = self
let new = postStruct(image: nil, label: nil, captions: nil, ad: adView)
adToLoad.append(adView!)
arrayOfPosts.insert(new, atIndex: index)
tableViewOne.reloadData()
index += adInterval
}


}

最佳答案

我们假设 arrayOfPosts 的元素数量与单元格中的元素数量一样多。否则你可能在数组或其他任何东西之外有一个错误索引。如果您有放置广告的单元格,您应该只将值分配给单元格广告。我不明白为什么要在单元格内放置一个重新加载表。如果你在这个方法中是因为表正在重新加载。NativeExpressAd 单元格应该在 GADNativeExpressAdView 类型或 UIView 类型(取决于 GADNativeExpressAdView 必须显示信息)中有一个 View ,例如调用 adView 并且您应该只将结构的内容分配给该 View ,或多或少像这样:

     reusableAdCell.adView = arrayOfPosts[indexPath.row].ad
return reusableAdCell

您可以显示 NativeExpressAd 单元格的代码

更新:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
if arrayOfPosts[indexPath.row].ad != nil{
let adView = arrayOfPosts[indexPath.row].ad
let reusableAdCell = tableViewOne.dequeueReusableCellWithIdentifier("NativeExpressAd", forIndexPath: indexPath) as! NativeExpressAd

reusableAdCell.adView = adView
return reusableAdCell
} else{
let cell = tableViewOne.dequeueReusableCellWithIdentifier("popularCell", forIndexPath: indexPath) as! PopTableViewCell
// put values of cell, label, caption, etc
return cell
}

关于swift - 如果结构项等于 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41907128/

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