小编Tra*_* M.的帖子

"无法分配"错误迭代结构数组

我有一系列结构:

struct CalendarDate {
    var date: NSDate?
    var selected = false
}

private var collectionData = [CalendarDate]()
Run Code Online (Sandbox Code Playgroud)

我简单地填写这样的日期:

    for _ in 1...7 {
        collectionData.append(CalendarDate(date: NSDate(), selected: false))
    }
Run Code Online (Sandbox Code Playgroud)

因此,当您点击collectionView时,我只想循环遍历数据并将它们全部标记为False.

    for c in collectionData {
        c.selected = false  ///ERROR: Cannot assign to 'selected' in 'c'
    }
Run Code Online (Sandbox Code Playgroud)

为什么我会收到此错误?

如果我这样做,它工作正常,但我想知道我上面做错了什么:

    for i in 0..<collectionData.count {
        collectionData[i].selected = false
    }
Run Code Online (Sandbox Code Playgroud)

ios swift

16
推荐指数
2
解决办法
2595
查看次数

在Swift中的UIPopoverController上设置多个箭头方向

在Swift中为UIPopoverController设置多个箭头方向的语法是什么?

像这样的东西:

popoverController.permittedArrowDirections = .Up | .Down
Run Code Online (Sandbox Code Playgroud)

uipopovercontroller swift

15
推荐指数
1
解决办法
2483
查看次数

使用@class来访问委托协议声明

我已经读过你应该尝试@class在头文件中使用而#import不是当你@class包含你正在尝试使用的委托协议时这不起作用.

MyView.h

#import <UIKit/UIKit.h>
@class MyCustomClass;  // <-- doesn't work for MyCustomClassDelegate, used below

@interface MyView : UIView <MyCustomClassDelegate>

@end
Run Code Online (Sandbox Code Playgroud)

我想我忽视了一些事情,有没有办法@class在这种情况下工作或者是#import我唯一的选择?

编辑:当然,解决这个问题的方法是在.m文件的私有接口部分而不是.h文件中声明#import MyCustomClass和MyCustomClassDelegate.

import objective-c header-files forward-declaration objective-c-protocol

7
推荐指数
2
解决办法
1947
查看次数

Swift - 使用字典数组从字典访问数据时出错

我有一个非常简单的例子,说明我想做什么

private var data = [String: [[String: String]]]()

override func viewDidLoad() {
    super.viewDidLoad()
    let dict = ["Key": "Value"]
    data["Blah"] = [dict, dict]
}

@IBAction func buttonTap(sender: AnyObject) {
    let array = data["Blah"]
    let dict = array[0] //<---- error here
    println(dict["Key"])
}
Run Code Online (Sandbox Code Playgroud)

基本上,我有一个字典,其值包含[String:String]字典数组.我把数据填入其中,但当我去访问数据时,我收到此错误:

不能下标'[([String:String])]类型的值?' 索引类型为'Int'

请让我知道我做错了什么.

ios swift

6
推荐指数
1
解决办法
7457
查看次数

确定segue是否是unwind segue?

我身边有6塞格斯,在prepareForSegue方法执行相同的操作,但是,我想跳过这个动作我的开卷赛格瑞,但我无法弄清楚如何确定是否正在传递的SEGUE是开卷SEGUE与否.

任何帮助,将不胜感激.

iphone objective-c storyboard ios segue

5
推荐指数
1
解决办法
4400
查看次数

在app委托中弹出到根视图控制器

我有一个有人登录的应用程序,如果他们在将其发送到后台超过10分钟后启动它,我会弹出一个不错的小"会话过期"警报并将它们发送到根视图控制器(登录页面).

一切都很好,但我不知道如何从app delegate的applicationWillEnterForeground:方法弹出导航控制器堆栈中的根视图控制器.

我尝试将navigationController保存到appDelegate变量上,但我想知道应用程序是否在后台运行了好几天,如果iOS开始释放一些变量,因为当时我在这个方法中遇到错误.

有任何想法吗?

iphone xcode objective-c ios

4
推荐指数
1
解决办法
8354
查看次数

保留块内块的循环

我是否必须连续声明弱引用以中断块内块的保留周期?

__weak typeof(self) weakSelf = self;
[self setMyBlock:^(id obj, NSUInteger idx, BOOL *stop) {
    typeof(self) strongSelf = weakSelf;
    [strongSelf doSomething];
    [strongSelf setMyBlock:^(id obj, NSUInteger idx, BOOL *stop) {
        //do I need to create another weak reference to strongSelf for this block?
        [strongSelf doSomething];
    }];  
}];
Run Code Online (Sandbox Code Playgroud)

objective-c ios objective-c-blocks

4
推荐指数
1
解决办法
202
查看次数

正确的语法循环核心数据NSSet

每当我遍历核心数据关系(NSSet)时,我必须将集合转换为数组:

for student in classroom.students.allObjects as! [Student] {
    print(student.name)
}
Run Code Online (Sandbox Code Playgroud)

或者我可以正常循环设置,但我必须先对项目进行类型转换才能使用它:

for student in classroom.students {
    let s = student as! Student
    print(s.name)
}
Run Code Online (Sandbox Code Playgroud)

我知道这是微不足道的,但我想要做的只是在循环中预先指定NSSet的强制转换,而不必进行这些工作吗?

当我尝试这样做时:

for student: Student in classroom.students {
    print(student.name)
}
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:表达式类型'NSSet'是不明确的,没有更多的上下文

如果我尝试这样的事情:

for student in classroom.students as! NSSet([Student]) {
    print(student.name)
}
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:声明的语句块是一个未使用的闭包

是否有正确的方法从Core Data循环NSSet并具有预定义的类型?

core-data ios swift2

4
推荐指数
1
解决办法
848
查看次数

Xcode 5/Mavericks - Cocoa Core Data SQLite DB位置

我已经看到其他问题同样的问题,他们都标记为"已回答",但他们提供的答案对我不起作用.

我在Xcode 5中创建了一个基本的cocoa应用程序,并将其作为Core Data/Document应用程序.我在Core Data中添加了一些条目,当我读回它时可以在NSLog中看到它们......现在我的sqlite DB位于何处?

我查了一下:〜/ Library/Containers /

我的应用程序不在那里.

我查了一下:〜/ Library/Developer/XCode/DerivedData /

我在那里找到了我的应用程序,但是我浏览了每个文件夹,根本找不到SQLite.

谁能告诉我它在哪里?这是一个Mac OSX应用程序,而不是iOS应用程序.

macos xcode cocoa core-data

3
推荐指数
1
解决办法
2282
查看次数

jQuery $(这个)在ajax POST之后无法访问?

假设我有一堆共享点击事件的链接:

<a href="#" class="do-stuff">Click me</a>
<a href="#" class="do-stuff">Click me</a>
<a href="#" class="do-stuff">Click me</a>
<a href="#" class="do-stuff">Click me</a>
Run Code Online (Sandbox Code Playgroud)

并在$('.do-stuff').click函数我执行一个JQuery ajax POST请求,用一些东西更新数据库,我得到一个成功的响应.在ajax完成之后,我只想将链接文本的值更改为我从服务器发回的任何内容...

$('.do-stuff').click(function () {
$.ajax({
  type: "POST",
  url: "MyWebService.asmx/DoSomething",
  data: '{CurrentLinkText: "'+ $(this).text() +'"}',
  contentType: "application/json; charset=utf-8",
  dataType: "json",
  success: function (result) {
    $(this).text(result.d);
  },
  error: function (XMLHttpRequest, textStatus, errorThrown) {
    alert(textStatus);
  }
});
Run Code Online (Sandbox Code Playgroud)

});

这个调用很好,我确认"result.d"确实是来自服务器的文本,但文本没有改变.我认为在AJAX发布后,$(this)元素不再可访问?我该怎么做才能解决这个问题?

javascript asp.net ajax jquery scope

2
推荐指数
1
解决办法
2388
查看次数

SwiftData:非法尝试在不同上下文中的对象之间建立关系

我有 2 个漂亮的模型,想为它们创建一些虚拟预览数据,但我遇到了错误:

非法尝试在不同上下文中的对象之间建立“人”关系

错误发生在这里:

@MainActor
let previewContainer: ModelContainer = {
    do {
        let container = try ModelContainer(
            for: Person.self, Item.self,
            configurations: ModelConfiguration(isStoredInMemoryOnly: true)
        )
        let person = Person.dummy()
        container.mainContext.insert(person)
        for i in 0 ..< 12 {
            let item = Item.dummy(i, person: person) //ERROR!
            container.mainContext.insert(item)
        }
        return container
    } catch {
        fatalError("Failed to create container \(error)")
    }
}()
Run Code Online (Sandbox Code Playgroud)

我正在使用 Xcode 15 beta 8。知道我做错了什么吗?

以下是我的模型供参考:

项目型号

@Model
final class Item {
    var note: String
    var person: Person

    init(note: String, person: …
Run Code Online (Sandbox Code Playgroud)

swift swift-data

1
推荐指数
1
解决办法
579
查看次数