我有一系列结构:
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) 在Swift中为UIPopoverController设置多个箭头方向的语法是什么?
像这样的东西:
popoverController.permittedArrowDirections = .Up | .Down
Run Code Online (Sandbox Code Playgroud) 我已经读过你应该尝试@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
我有一个非常简单的例子,说明我想做什么
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'
请让我知道我做错了什么.
我身边有6塞格斯,在prepareForSegue方法执行相同的操作,但是,我想跳过这个动作我的开卷赛格瑞,但我无法弄清楚如何确定是否正在传递的SEGUE是开卷SEGUE与否.
任何帮助,将不胜感激.
我有一个有人登录的应用程序,如果他们在将其发送到后台超过10分钟后启动它,我会弹出一个不错的小"会话过期"警报并将它们发送到根视图控制器(登录页面).
一切都很好,但我不知道如何从app delegate的applicationWillEnterForeground:方法弹出导航控制器堆栈中的根视图控制器.
我尝试将navigationController保存到appDelegate变量上,但我想知道应用程序是否在后台运行了好几天,如果iOS开始释放一些变量,因为当时我在这个方法中遇到错误.
有任何想法吗?
我是否必须连续声明弱引用以中断块内块的保留周期?
__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) 每当我遍历核心数据关系(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并具有预定义的类型?
我已经看到其他问题同样的问题,他们都标记为"已回答",但他们提供的答案对我不起作用.
我在Xcode 5中创建了一个基本的cocoa应用程序,并将其作为Core Data/Document应用程序.我在Core Data中添加了一些条目,当我读回它时可以在NSLog中看到它们......现在我的sqlite DB位于何处?
我查了一下:〜/ Library/Containers /
我的应用程序不在那里.
我查了一下:〜/ Library/Developer/XCode/DerivedData /
我在那里找到了我的应用程序,但是我浏览了每个文件夹,根本找不到SQLite.
谁能告诉我它在哪里?这是一个Mac OSX应用程序,而不是iOS应用程序.
假设我有一堆共享点击事件的链接:
<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)元素不再可访问?我该怎么做才能解决这个问题?
我有 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) ios ×6
objective-c ×4
swift ×4
core-data ×2
iphone ×2
xcode ×2
ajax ×1
asp.net ×1
cocoa ×1
header-files ×1
import ×1
javascript ×1
jquery ×1
macos ×1
scope ×1
segue ×1
storyboard ×1
swift-data ×1
swift2 ×1