小编Dog*_*fee的帖子

将对象映射到用于TableView节的2D数组Swift

我无法找到更好的方法来做到这一点.我将学生对象的所有属性映射到2D数组.所以我的电视有部分.

我也不能使用静态表视图,如果是这样,这个问题就不存在了.

所以我在TVC的代码

let currentUser = PFUser.currentUser()! as! MyUser

var membershipSection:[[String:String]]!
var detailsSection:[[String:String]]!
var emergancySection:[[String:String]]!
var medicalSection:[[String:String]]!

var titlesForSection = ["MEMBERSHIP", "DETAILS", "EMERGANCY CONTACT", "MEDICAL HISTORY"]

var combo = [[[String:String]]]() // Data Source for TableView 
Run Code Online (Sandbox Code Playgroud)

//从ViewDidLoad调用以下内容

func loadDisplayDataSource() {

    combo.removeAll(keepCapacity: true)

    var idString = "Awaiting ID Generation"

    if student.objectId != nil {
        idString = student.objectId!
    }

    membershipSection = [["Sessions":student.sessionsRemaining], ["Details":""], ["ID":idString]]
    detailsSection = [["First Name":student.firstName], ["Last Name":student.lastName], ["DOB":""], ["Address":""], ["Phone":""], ["Email":student.email], ["Occupation":""]]
    emergancySection = [["Name":""], ["Phone":""]]
    medicalSection = [["Recent Surgery":""], …
Run Code Online (Sandbox Code Playgroud)

uitableview multidimensional-array ios swift

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

Firebase离线存储 - 查询不返回在线商店中的更改

我正在使用Firebase离线功能设置为true.

let ref = FIRDatabase.database().referenceWithPath(“my data”).child(“my users id”)
scoresRef.keepSynced(true)
Run Code Online (Sandbox Code Playgroud)

此路径还将Synced设置为true,因为在使用本地缓存时,应用程序中不会立即看到数据库中的更改.

我在我的应用程序中有另一个我要搜索的顶级节点/路径 - 包含其他用户.

我想使用singleEvent查询并找到一个电子邮件地址,我这样做是通过

studios.queryOrderedByChild("email").queryEqualToValue(email).observeSingleEventOfType(.Value, withBlock: { snapshot in  // etc
Run Code Online (Sandbox Code Playgroud)

我能够找到该节点,但是我一直在获取本地缓存版本,而不是firebase在线商店中的最新版本.

如果我在线对节点进行了一些更改,我不会在获取中获取这些更改.

如果我将我的提取更改为监视器类型即

studios.queryOrderedByChild("email").queryEqualToValue(email).observeEventType(.Value, withBlock: { snapshot in  // etc
Run Code Online (Sandbox Code Playgroud)

我先获取本地缓存节点,然后获取在线更新版本.

我宁愿使用SingleEvent提取,但我不想用keepSynced监视用户整个节点,因为它是一个高级节点,我不想在本地保留所有数据,因为它与用户没有直接关系.

我发现的一个修复是在单个查询之前添加.keepSynced(true),在完成块中添加.keepSynced(false).我不确定这个节点的下载量是多少,也可以使用monitor fetch而不是singleEvent.

我应该只使用monitorEvent还是有更好的方法来使用SingleEventFetch进入在线商店而不是仅仅返回我的本地节点.

PS我在线,这是通过确认

var connectedRef = FIRDatabase.database().referenceWithPath(".info/connected")
connectedRef.observeEventType(.Value, withBlock: { snapshot in
    let connected = snapshot.value as? Bool
    if connected != nil && connected! {
        println("Connected")
    } else {
        println("Not connected")
    }
})
Run Code Online (Sandbox Code Playgroud)

谢谢

ios firebase firebase-realtime-database

6
推荐指数
0
解决办法
510
查看次数

ViewDidLoad中的UIManagedDocument创建

经过一些研究后,我仍然不确定何时/如何创建我的UIManagedDocument.

@interface ViewController ()
@property (strong, nonatomic) UIManagedDocument *document;
@end

@implementation ViewController

- (void) viewWillAppear:(BOOL)animated
{
[super viewWillAppear:YES];

NSFileManager *fileManager = [NSFileManager defaultManager];
NSURL *documentsDirectory = [[fileManager URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] firstObject];
NSString *documentName = @"MyDocument";
NSURL *url = [documentsDirectory URLByAppendingPathComponent:documentName];

BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:[url path]];

if (fileExists) {
    [self.document openWithCompletionHandler:^(BOOL success) {
        NSLog(@"Exsits dont create again");
        if (success) [self documentIsReadyCreateAndObject];
        if (!success) NSLog(@"cound not open document at %@", url);
    }];
}
else {
    // create it
    [self.document saveToURL:url forSaveOperation:UIDocumentSaveForCreating …
Run Code Online (Sandbox Code Playgroud)

core-data uimanageddocument

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

从弹出的 UINavigationController 或 UITabBarController 确定 viewWillAppear

我无法找到一种方法来区分从导航控制器堆栈弹出和从 UITabBarController 进入视图控制器。

我只想在视图从 TabBar 呈现时调用 ViewWillAppear 中的方法,而不是在有人按下导航控制器时。

如果我没有使用 TabBarController,我可以很容易地使用 viewDidLoad 在功能上获得它。

我试过了,

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)

    println("View Will Appear")

    if isBeingPresented() {
        println("BP")
    }
    if isMovingFromParentViewController() {
        println("from")
    }
    if isMovingToParentViewController() {
        println("to")
    }
}
Run Code Online (Sandbox Code Playgroud)

但是当我按下 Tab 按钮或按下后退按钮时没有区别。

只有“视图将出现”被调用。

使用 iOS 8.4 / Swift

uitabbarcontroller uinavigationcontroller viewwillappear ios swift

5
推荐指数
2
解决办法
2939
查看次数

全屏封面/模态的替代动画 - iOS 14

有没有办法在 SwiftUI 中为新的全屏模式 iOS 14 使用替代动画?

目前它从底部向上滑动,但我想要交叉溶解。我已经尝试了几件事,但没有运气。我认为新的matchedGeometryEffect()修饰符可能有用。

下面是这个新功能的默认使用

struct ContentView: View {

    @State private var isShowing = false

    var body: some View {
        Button {
            isShowing.toggle()
        } label: {
            Text("Show Modal").font(.largeTitle)
        }.fullScreenCover(isPresented: $isShowing) {
            Text("Hello").font(.largeTitle)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

animation swiftui ios14

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

UICollectionCell在CollectionViewController中调用方法

我有一个包含集合视图的标准视图控制器.

我正在使用从自定义子类创建的自定义单元格填充集合视图UICollectionViewCell.

  1. 从集合视图单元类中调用集合视图类中的方法的最佳实践是什么?

  2. 为什么在我的集合视图单元类中没有调用以下init,我认为当collectionView类创建我的单元格时会调用它.

    (id)initWithFrame:(CGRect)frame

我想这样做的原因是因为我正在删除集合视图单元格,删除函数位于集合视图单元格类中.我想在删除时播放声音,而宁愿在集合视图控制器类中初始化声音,而不是每个单元格.

ios uicollectionviewcell

4
推荐指数
2
解决办法
5068
查看次数

无法在iOS 13中使用可扩散数据源通过TableView滑动以删除

我正在更新,UITableViewController以使用新的UITableViewDiffableDataSource,但所有工作都正常,但要滑动删除即可。

这是我如何使用滑动删除的示例

func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {

   let lockedAction = UIContextualAction(style: .normal, title: "TEST") { (_, _, completion) in
       print("tapped....")
       completion(true)
   }

    return UISwipeActionsConfiguration(actions: [lockedAction])
}
Run Code Online (Sandbox Code Playgroud)

但这在UITableViewController具有UITableViewDiffableDataSource

没有滑动,方法中的断点也不会被调用

我以为这是一个Beta错误,但是我更新到了Xcode 11 GM,并且发生了同样的事情。

感谢您的任何建议

uitableview swift ios13 diffabledatasource

4
推荐指数
2
解决办法
451
查看次数

用于NSCoding的Swift 2.0单元测试

我将尝试使用Xcode 7(代码覆盖率)和Swift 2.0中的新测试功能.

使用代码覆盖,我发现我没有测试我的NSCoding方法.

在此输入图像描述

有关保存一些细节的简单示例,例如

required init(coder aDecoder: NSCoder) {
    name = aDecoder.decodeObjectForKey("name") as! String
    time = aDecoder.decodeIntegerForKey("time")
}

func encodeWithCoder(aCoder: NSCoder) {
    aCoder.encodeInteger(time, forKey: "time")
    aCoder.encodeObject(name, forKey: "name")
}
Run Code Online (Sandbox Code Playgroud)

我如何在XCTest类中测试这些方法.

unit-testing nscoding swift

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

从 CLPlacemark 创建地址字符串

任何人都可以建议清洁工从 CLPlacemark 创建地址字符串。

目前我正在使用这个扩展

extension CLPlacemark {

    func makeAddressString() -> String {
        var address = ""
        if subThoroughfare != nil { address = address + " " + subThoroughfare! }
        if thoroughfare != nil { address = address + " " + thoroughfare! }
        if locality != nil { address = address + " " + locality! }
        if administrativeArea != nil { address = address + " " + administrativeArea! }
        if postalCode != nil { address = address …
Run Code Online (Sandbox Code Playgroud)

string optional swift clplacemark

3
推荐指数
2
解决办法
2307
查看次数

连接到 Xcode 12 时无法在设备上启动 iOS 14 应用程序

在物理设备(运行 14.0.1 的设备)上使用 Xcode 12 运行任何应用程序时出现问题

从一个新项目开始,简单的 Hello World 应用程序在连接到 Xcode 时不会在我的设备上启动。

屏幕保持黑色,显示白色底部主页栏。Xcode 显示应用程序正在运行,没有警告,没有错误。

struct ContentView: View {
    var body: some View {
        Text("Hello, world!").foregroundColor(.red)
            .padding()
            .onAppear {
                print("Working....")
            }

    }
}
Run Code Online (Sandbox Code Playgroud)

它在模拟器上运行良好,因此打印出调试文本。

但是,在我的设备上,我没有收到调试文本 - 所以启动过程失败了。

但是,如果我在 Xcode 上停止该项目,然后在我的设备上运行已安装的应用程序,该应用程序将按预期运行!!

我更改了几次字体颜色,它正确地将应用程序安装到设备上,但在连接到 Xcode 时无法运行,但在手机上运行应用程序时可以正常工作

我取消了我的设备的配对,但没有帮助。

不知道接下来要尝试什么...

感谢您的任何建议

device launch ios14 xcode12

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

UIMenu在CollectionView中使用

这就是我设置弹出窗口的方式

UIMenuItem *menuItem = [[UIMenuItem alloc] initWithTitle:@"Delete Patient"

                                                  action:@selector(customAction:)];



[[UIMenuController sharedMenuController] setMenuItems:@[menuItem]];
Run Code Online (Sandbox Code Playgroud)

然后添加require方法

- (BOOL)canBecomeFirstResponder {

return YES;

}



- (BOOL)canPerformAction:(SEL)action withSender:(id)sender {



NSLog(@"canPerformAction");

// The selector(s) should match your UIMenuItem selector

if (action == @selector(customAction:)) {

    return YES;

}

return NO;

}



- (void) customAction:(id) sender

{

for (Treatment *t in self.ptToDelete.patientRx) {

    [self.managedObjectContext deleteObject:t];

}



[self.managedObjectContext deleteObject:self.ptToDelete];



NSError *error = nil;

if (![self.managedObjectContext save:&error]) {

    NSLog(@"Error! %@", error);

}

}
Run Code Online (Sandbox Code Playgroud)

这适用于iOS6,但现在不适用.以下方法未被调用,应该在我点击并按住时调用

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
Run Code Online (Sandbox Code Playgroud)

uimenucontroller ios

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

正则表达式拆分NSString - iOS

在iOS中使用正则表达式拆分字符串

我已经使用循环解决了这个问题,但是想要一个更清晰的答案,我希望一个reg exe大师可以帮助我.

我的原始字符串可能如下所示

NSString *originalString = @"343 a mr smith needs this work";

NSString *originalStringVerTwo = @"345a mr jones needs this work as well";

NSString *originalStringVerThree = @"345 Mrs Someone";
Run Code Online (Sandbox Code Playgroud)

我需要分成3个单独的新字符串:

  • 带有或带有尾随"a"或"b"的数字,删除if之间的空格
  • 人名,也许是资本与否,即史密斯先生或琼斯夫人等
  • 在此之后,零个或多个单词将出现在最终字符串中

例如

  • 123a先生,这里有些话
  • 124 b mrs jones n/p
  • 654 Foo先生
  • 123 Jones n/p
  • 345 n/p

应该导致以下结果

第1行

NSString *one = 123a
NSString *two = mr who
NSString *three = here are some words
Run Code Online (Sandbox Code Playgroud)

第2行

NSString *one = 124b // i want the white space removed between …
Run Code Online (Sandbox Code Playgroud)

regex objective-c nsstring ios

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